Docker相关问题汇总

原创
2018/04/19 12:29
阅读数 51

docker 安装

  • centos7安装dokcer ce版

注:通过yum直接安装的版本过老,推荐使用以下方式安装

  • 如果有旧版本安装,先删除老版本
$ sudo yum remove docker \
                  docker-common \
                  docker-selinux \
                  docker-engine
  • 安装docker ce

    • 安装依赖组件
    $ sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
    
    • 设置稳定安装源
    $ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
    • 安装源可选项
    sudo yum-config-manager --enable/--disable docker-ce-edge (edge源)
    sudo yum-config-manager --enable/--disable docker-ce-test (test源)
    

    一般选择stable源

    • 安装docker ce
    sudo yum install docker-ce
    
  • 安装之后服务配置

    • 允许开机自启动服务
      sudo systemctl enable docker
      
    • 启动docker服务
      sudo systemctl start docker
      

免root使用docker命令

  • 添加docker组
sudo groupadd docker
  • 将用户加入该 group 内,然后退出并重新登录就生效(这一步貌似非必须)
sudo gpasswd -a ${USER} docker
  • 重启 docker 服务
sudo systemctl restart docker
  • 切换当前会话到新 group 或者重启 X 会话
newgrp - docker

注意:最后一步是必须的,否则因为 groups 命令获取到的是缓存的组信息,刚添加的组信息未能生效,所以 docker images 执行时同样有错。

docker本地镜像源配置

docker pull https问题(老版本)

  • 修改配置文件
sudo vim /etc/sysconfig/docker

添加如下内容:

ADD_REGISTRY='--add-registry 192.168.1.247:5000'
OPTIONS='--insecure-registry 192.168.1.247:5000'

注意:这个问题一般是在拉取本地镜像源镜像的时候出现,其中链接为本地镜像源地址

docker ce17 pull https问题

  • 添加文件/etc/docker/daemon.json,并添加以下内容重启docker即可
{"insecure-registries":["192.168.1.247:5000"]}

docker registry v2使用

  • 查看所有的镜像
curl http://192.168.1.247:5000/v2/_catalog
  • 查看某一镜像的TAG Lsit
curl http://192.168.1.247:5000/v2/{image_name}/tags/list

docker 允许远程api调用

  • 查看配置文件位于哪里
systemctl show --property=FragmentPath docker 
  • 编辑配置文件内容,接收所有IP请求
sudo vim /usr/lib/systemd/system/docker.service  
修改内容:
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376
  • 重新加载配置文件,重启docker daemon
sudo systemctl daemon-reload     
sudo systemctl restart docker 
  • 清理所有停止的容器

docker container prune

  • 清理所有不用数据(停止的容器,不使用的volume,不使用的networks,悬挂的镜像)

docker system prune -a

  • docker时间同步

ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

  • 清理多余的网桥

docker network disconnect --force bridge XXX

  • 清理被删除tag的镜像文件

通过harbor删除tag之后,镜像并不会被删除,需要额外执行清除命令

docker exec registry registry garbage-collect /etc/registry/config.yml

docker 端口映射错误解决方法

  • 某次手贱升级系统之后,启动docker出现该问题,记录解决方案,问题如下:
COMMAND_FAILED: '/sbin/iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 8111 -j DNAT --to-destination 172.17.0.6:8111 ! -i docker0' failed: iptables: No chain/target/match by that name.
  • 解决方案
    • pkill docker
    • iptables -t nat -F
    • ifconfig docker0 down
    • brctl delbr docker0
    • 重启docker后解决
展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部