基础操作

加入docker用户组

如果执行docker命令报错Couldn’t connect to Docker daemon at http+docker://localunixsocket - is it running?,解决方法是将当前用户加入docker组。

sudo usermod -aG docker $USER 

然后退出当前用户比如切换为root,再次切换为当前用户。或者重启终端也行。
最后,再执行docker相关命令,例如docker-compose up -d就ok了。

进入容器

docker exec -it 3ea8 sh

复制文件

# 从容器拷贝文件
docker cp ${容器名或容器ID}:/folder/file ~/file
docker cp ${容器名或容器ID}:/folder ~/folder
# 向容器拷贝文件
docker cp ~/file ${容器名或容器ID}:/folder/file
docker cp ~/folder ${容器名或容器ID}:/folder

更新容器

docker-compose down
docker-compose pull
docker-compose up -d

清理容器

docker system prune
docker image prune -a

第一行删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache
第二行删除所有没有用的镜像

如果只是想删除所有没有标签的镜像:

docker rmi $(docker images -q -f "dangling=true")

推送镜像

首先给要上传的镜像起名字

docker tag 8a4c xx/xx:xx

然后登录docker

docker login

最后推送

docker push xx/xx

备份和恢复备份

#把镜像变成tar包用于拷贝
docker save -o imagename.tar image:tag
# 把tar包回复成镜像
docker load -i imagename.tar

其他说明

从基础镜像启动容器然后维持运行

docker pull centos:7
docker run -d --name test_container centos:7 /bin/sh -c "while true; do sleep 1000; done"

限制docker日志大小并设置ipv6

修改/etc/docker/daemon.json,加入这些内容,会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘

{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}

然后重启docker:

sudo systemctl restart docker