Docker安装最新版,迁移目录

492 阅读3分钟

1、docker安装最新版本

centos7 默认安装的是1.13版本,如果需要安装新版本,需要先卸载久版本

1.1删除旧版本

  • 通知docker服务systemctl stop docker

  • 查看当前版本rpm -qa | grep docker

  • 卸载软件包

    yum erase docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine \
                      docker-ce
    
  • 删除相关配置

    find /etc/systemd -name '*docker*' -exec rm -f {} \;
    find /etc/systemd -name '*docker*' -exec rm -f {} \;
    find /lib/systemd -name '*docker*' -exec rm -f {} \;
    rm -rf /var/lib/docker   #删除以前已有的镜像和容器,非必要
    rm -rf /var/run/docker 
    

1.2 安装新版本

  • 升级系统包

    yum update

  • 软件包安装

    yum install -y yum-utils device-mapper-persistent-data lvm2

  • 添加yum源

    yum-config-manager \
    --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
  • 查看可安装的版本

    yum list docker-ce --showduplicates | sort -r

  • 安装最新版本

    yum install docker-ce -y

  • 启动并开启自启

    systemctl start docker
    systemctl enable docker
    
  • 查看docker版本

    docker version

2. linux下解决docker端口映射到宿主机后外网无法访问的问题

解决办法:
 vi /etc/sysctl.conf
或者
 vi /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1

重启network服务
 systemctl restart network

查看是否修改成功
 sysctl net.ipv4.ip_forward

如果返回为“net.ipv4.ip_forward = 1”则表示成功了

3. docker开机自启

sudo systemctl enable docker
sudo systemctl start docker

4. docker查看日志

docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
docker logs [OPTIONS] CONTAINER
 
Options:
 
--details 显示更多的信息
 
-f, --follow 实时输出日志,最后一行为当前时间戳的日志
 
--since string 输出日志开始日期,即只输出指定日期之后的日志。
 
--tail string 显示最后多少行日志, 默认是all
            (如: -tail=10 : 查看最后的 10 行日志。)
 

5.清理docker磁盘空间,迁移/var/lib/docker目录

  1. 查看磁盘使用状况

    du -hs /var/lib/docker/

  2. 迁移/var/lib/docker/目录

    • 停止docker服务

      systemctl stop docker

    • 创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在 /home目录下面建了 /home/docker/lib目录,执行的命令是

      mkdir -p /home/docker/lib

    • 迁移/var/lib/docker目录下面的文件到 /home/docker/lib

      rsync -avz /var/lib/docker /home/docker/lib/

    • 配置 /etc/systemd/system/docker.service.d/devicemapper.conf。查看 devicemapper.conf 是否存在。如果不存在,就新建

      mkdir -p /etc/systemd/system/docker.service.d/
      vi /etc/systemd/system/docker.service.d/devicemapper.conf
      
    • 然后在 devicemapper.conf 写入:(同步的时候把父文件夹一并同步过来,实际上的目录应在 /home/docker/lib/docker )

      [Service]
      ExecStart=
      ExecStart=/usr/bin/dockerd  --graph=/home/docker/lib/docker
      
    • 重新加载 docker

      systemctl daemon-reload
       
      systemctl restart docker
      
    • 为了确认一切顺利,运行docker info命令检查Docker 的根目录.它将被更改为 /home/docker/lib/docker

      ...
      Docker Root Dir: /home/docker/lib/docker
      Debug Mode (client): false
      Debug Mode (server): false
      Registry: https://index.docker.io/v1/
      
      
    • 启动成功后,再确认之前的镜像还在:docker images

    • 确认无误后,删除/var/lib/docker/目录中的文件

6. docker 限制容器日志大小

  • 创建/etc/docker/daemon.json如果已经存在则不用创建

  • 增加log-opts参数

    "log-driver":"json-file",
    "log-opts":{ "max-size" :"50m","max-file":"1"}
    
  • 加载配置文件,并重启

    systemctl daemon-reload
    systemctl restart docker