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后解决