分类: docker

docker
  • Linux 安装Docker

    [1].安装EPEL仓库

      Docker使用EPEL发布,RHEL系的OS首先要确保已经持有EPEL仓库,否则先检查OS的版本,然后安装相应的EPEL包。

    [root@host79 ~]# yum install -y epel-release

    [2].DockerIO

    方法一:

    [root@host79 ~]#  yum install -y docker-io

    若出现No package docker-io available.则使用方法二安装

    方法二:

    [root@host79 ~]#  yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

    [3].配置文件是否存在

    [root@host79 ~]# ls -l /etc/sysconfig/docker

    [4].启动Docker服务

    [root@host79 ~]# service docker start

    [5].查看Docker版本信息

    [root@host79 ~]# docker version

    3.Docker加速

      鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是阿里云的本人自己账号的镜像地址(需要自己注册有一个属于你自己的):https://xxxx.mirror.aliyuncs.com

    [1].获取阿里云的加速器地址

    https://xxxxxxxx.mirror.aliyuncs.com

    自动安装

    A:可以用官方脚本(可能会遇到问题一二三)

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    

    安装需要注意yum是最新版本

    yum update
    
    可能遇到的问题一:
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    

    需要安装一下deltarpm

    yum provides '*/applydeltarpm'  
    yum install deltarpm -y
    
    可能遇到的问题二:
    No Presto metadata available for docker-ce-stable
    

    需要安装docker-ce

    yum install docker-ce -y
    
    可能遇到的问题三:

    安装完成后测试:

    docker run hello-world
    

    报错

    docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
    

    重启即可

    systemctl daemon-reload
    
    systemctl restart docker.service
    

    B:使用国内脚本(没遇到问题)

    curl -sSL https://get.daocloud.io/docker | sh
    

    安装需要注意apt-get是最新版本

    apt-get update
    

    配置镜像

    阿里云镜像免费注册使用:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    在这里插入图片描述阿里云还贴心的给了配置的脚本

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
    
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://youaddress.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    设置自启动

    查看已设置开机启动的项目

    systemctl list-unit-files | grep enable  
    

    没有docker,则设置一下

    systemctl enable docker.service 
    

    想要关闭的话用下面的

    systemctl disable docker.service 
  • docker虚拟磁盘文件迁移ext4.vhdx

    ext4.vhdx默认在C盘用户下, 会很大, 现在要迁移到其他盘.

    (1)打开Windows PowerShell

    查看docker状态和版本

    docker-desktop-data

    需要迁移到其他盘

    (2) wsl –shutdown

    (3) 导出 docker-desktop-data

    wsl –export docker-desktop-data E:\install\docker_data\docker-desktop-data.tar

    (4)注销 docker-desktop-data

    wsl –unregister docker-desktop-data

    (5)重新导入docker-desktop-data

    wsl –import docker-desktop-data E:\install\docker_data\data\ E:\install\docker_data\docker-desktop-data.tar –version 2

    就转移到E盘下面了

  • docker 开启远程访问

    netsh interface portproxy add v4tov4 listenport=2375 connectaddress=127.0.0.1 connectport=2375 listenaddress=【your-public-ip】 protocol=tcp

  • Podman 快速入门

    今天在某云上新购一台云服务器,发现已经有了 CentOS8.2 官方镜像可选,出于对新鲜事物的好奇,我决定开始采用 CentOS8.2,即使我还没有为它的新特性做好准备。

    我的应用主要以单机版容器为主。因此,服务器启动的第一件事就是安装 Docker。不幸的事情发生了,我的 Docker 应用没有像 CentOS7 那样如期 running 起来。

    花了大量的时间排查,才找到一丝线索:CentOS8 以上的版本默认已经安装一个等同于 Docker的容器解决方案,这个就是Podman。

    两个容器解决在一起工作,相互打架的事情必然会发生。出于长治久安的考量,今天整个下午我展开了对 Podman 的研究,得到了如下的结论,希望这些结论能够让大家少走一点弯路。

    Podman 与 Docker 哪个好?

    对于这种问题,我想如何没有深刻的实践是一定无法得出结论的。就我个人来说,首先,刚开始学习的时候,我也尝试先从专业博客和论坛中寻找答案。

    我发现 Podman 中文相关的资料非常少,同理,评价它的博客就更少了,倒是有一篇非常吸人眼球的文章,例如:Docker 大势已去,Podman 万岁。但认真阅读它,却没有特别有价值的对比,完全是一种主观的表达。因此,我们不要被他人的文章所引导(误导)而形成一种偏见。

    Podman 是 RedHat 为了抢占容器标准的一种战略产品,这就是我的看法。

    Podman 兼容 Docker吗?

    大部分是兼容的,例如:

    1. 可以直接使用 Docker 镜像
    2. 命令非常相似

    如果你非常怀念 docker命令,甚至可以给 Podman 设置别名为 docker:

    echo "alias docker=podman" >> .bashrc
    source .bashrc
    

    Podman 镜像

    默认镜像库

    文件 /etc/containers/registries.conf 是设置镜像地址配置文件,默认会搜索 [‘registry.access.redhat.com’, ‘registry.redhat.io’, ‘docker.io’, ‘quay.io’]
    等几个镜像库。

    不过,这几个镜像库下载速度非常慢,可以说是基本无法顺利的将镜像拉下来。

    所以,需要修改修改镜像库配置文件,也就是大家说的镜像加速方案。

    镜像加速

    只需2个步骤实现镜像加速:

    1. 改名并备份好文件:/etc/containers/registries.conf
    2. 再新建一个空的 registries.conf 文件,插入如下内容unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "******.mirror.aliyuncs.com"
    3. 修改 location
    4. 保存

    Podman Compose

    Podman Compose 等同于 Docker Compose,是用于固化容器运行参数以及协调容器之间的关系的一种较为简单的方案。

    使用如下的命令,安装 Podman Compose,并根据自己的喜好设置别名(如果仍然忘不了 docker)

    pip3 install podman-compose
    echo "alias docker-compose=podman-compose" >> .bashrc
    source .bashrc
    

    Podman 外网

    如果以普通用户运行容器,此容器默认无法被外网访问,为了避免不必要的麻烦,建议以root用户创建并运行容器。

    另外,run 容器的时候,请勿使用 -p 0.0.0.0:9090:80 这种端口映射方式,它会导致容器无法被外网访问。如果采用正常的端口映射方式 -p :9090:80,就没有任何问题。

    #无法被外网访问
    sudo podman run --name phpmyadmin  --restart=always  -itd  -p 0.0.0.0:9090:80  -e PMA_HOST=10.88.0.1  phpmyadmin/phpmyadmin
    
    #可以被外网访问
    sudo podman run --name phpmyadmin  --restart=always  -itd  -p 9090:80  -e PMA_HOST=10.88.0.1  phpmyadmin/phpmyadmin
    

    标签

  • zookeeper & webui

     docker run --name myZookeeper --restart always -e JVMFLAGS="-Xmx1024m" -p 2181:2181 zookeeper
     docker run -t -i -e ZKLIST='172.16.8.212:2181' -p 9090:9090 maauso/zkui

  • Docker-compose常用命令

    莫小安

    Docker-compose常用命令

    1.github地址:https://github.com/TodorText/lnmp.git

    这个是根据laradock精简的lnmp,并且摘除了从容器挂载数据卷

    2.命令

    docker-compose –help你会看到如下这么多命令

    build               Build or rebuild servicesbundle              Generate a Docker bundle from the Compose fileconfig              Validate and view the Compose filecreate              Create servicesdown                Stop and remove containers, networks, images, and volumesevents              Receive real time events from containersexec                Execute a command in a running containerhelp                Get help on a commandimages              List imageskill                Kill containerslogs                View output from containerspause               Pause servicesport                Print the public port for a port bindingps                  List containerspull                Pull service imagespush                Push service imagesrestart             Restart servicesrm                  Remove stopped containersrun                 Run a one-off commandscale               Set number of containers for a servicestart               Start servicesstop                Stop servicestop                 Display the running processesunpause             Unpause servicesup                  Create and start containersversion             Show the Docker-Compose version information

    3.常用命令

    docker-compose up -d nginx                     构建建启动nignx容器

    docker-compose exec nginx bash            登录到nginx容器中

    docker-compose down                              删除所有nginx容器,镜像

    docker-compose ps                                   显示所有容器

    docker-compose restart nginx                   重新启动nginx容器

    docker-compose run –no-deps –rm php-fpm php -v  在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器

    docker-compose build nginx                     构建镜像 。        

    docker-compose build –no-cache nginx   不带缓存的构建。

    docker-compose logs  nginx                     查看nginx的日志 

    docker-compose logs -f nginx                   查看nginx的实时日志

    docker-compose config  -q                        验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 

    docker-compose events –json nginx       以json的形式输出nginx的docker日志

    docker-compose pause nginx                 暂停nignx容器

    docker-compose unpause nginx             恢复ningx容器

    docker-compose rm nginx                       删除容器(删除前必须关闭容器)

    docker-compose stop nginx                    停止nignx容器

    docker-compose start nginx                    启动nignx容器

  • docker logs 命令

    • docker logs 容器名
    • docker logs -f 容器名
    • docker logs -tail=100 -f 容器名 最新100条
  • docker开机自动启动

    方法一:

    1 chkconfig docker on

    方法二:

    1.1是用systemctl:

    1 systemctl enable docker

    1.2将Docker的docker.service服务移动到系统服务中

    123 # cp /usr/lib/systemd/system/docker.service /etc/systemd/system/ # systemctl daemon-reload # systemctl restart docker

    1.3查看

    1 ll /etc/systemd/system/multi-user.target.wants/docker.service
    1 lrwxrwxrwx 1 root root 38 Mar 26 14:45 /etc/systemd/system/multi-user.target.wants/docker.service -> /usr/lib/systemd/system/docker.service
  • Docker update命令使用

    描述

    更新一个或多个容器的配置。

    语法

    1 docker update [OPTIONS] CONTAINER [CONTAINER…]

    OPTIONS 说明

    名称 描述
    --blkio-weight 阻塞IO (相对权重),介于10到1000之间,0表示禁用(默认禁止)
    --cpu-period 限制CPU CFS(完全公平的调度程序)期限
    --cpu-quota 限制CPU CFS(完全公平的调度程序)配额
    --cpu-rt-period API 1.25+,将CPU实时时间限制为微秒
    --cpu-rt-runtime API 1.25+,将CPU实时运行时间限制为微秒
    --cpu-shares-c CPU份额(相对权重)
    --cpus API 1.29+,CPU数量
    --cpuset-cpus 允许执行的CPU(0-3,0,1)
    --cpuset-mem 允许执行的MEM(0-3,0,1)
    --kernel-memory 内核内存限制
    --memory-swap 交换限制等于内存加交换,“-1”以启用无限交换
    --memory-reservatio 内存软限制
    --memory-m 内存限制
    --pids-limit API 1.40+,调节容器pids限制(-1表示无限制)
    --restart 容器退出时重新启动策略以应用

    实例

    1. 更新 CPU 共享数量
    1 docker update –cpu-shares 512 f361b7d8465
    1. 更新容器的重启策略
    1 docker update –restart=always f361b7d8465
    1. 更新容器内存
    1 docker update -m 500M f361b7d8465

    更多用法请查看:https://docs.docker.com/engine/reference/commandline/update/

  • docker 常用服务启动

    创建网络:

    docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway 172.18.0.1 mynet

    启动PHP-NGINX:

    docker run -d -p 2345:2345 -p80:80 -v e:/web:/app --net mynet --name php-nginx houlijiang/php-nginx php /web/mwj/es/start.php start

    启动ES:

    docker run -d --name es.server -p 9200:9200 -p 9300:9300 --ip 172.18.0.2 --net mynet -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /etc/elasticsearch/config/es:/usr/share/elasticsearch/config -v /etc/elasticsearch/config/ik:/usr/share/elasticsearch/plugins/ik/config -v /data/elasticsearch/data/nodes:/usr/share/elasticsearch/data/nodes registry.cn-beijing.aliyuncs.com/houlijiang/es-ik:6.8.14

    启动mysql:

    docker run -v /data/mysql-master/conf.d:/etc/mysql/conf.d -v /data/mysql-master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d -p 33060:3306 --net mynet --ip 172.18.0.3 --name mysql.master mysql:5.7

    启动rabbitmq:

    here is a second set of tags provided with the management plugin installed and enabled by default, which is available on the standard management port of 15672, with the default username and password of guest / guest:
    docker run -d --hostname my-rabbit --net mynet --name mq.server -p 15672:15672 -p 5672:5672 rabbitmq:3-management

    启动ftp:

    docker run -d -v /wwwroot/wordpress/:/home/vsftpd/user01 \
    -p 20:20 \
    -p 21:21 \
    -p 21100-21110:21100-21110 \
    -e FTP_USER=user01 \
    -e FTP_PASS=123456 \
    -e PASV_ADDRESS=0.0.0.0 \
    -e PASV_MIN_PORT=21100 \
    -e PASV_MAX_PORT=21110 \
    -e pasv_promiscuous=YES \
    --name vsftpd \
    --restart=always \
    fauria/vsftpd