基础操作
加入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