安装
- 第一步:上传
docker-20.10.8.tar
到/data/
- 第二步:创建docker数据目录
[root@SZD-L0519334 ~]# mkdir -p /data/docker_lib/
- 第三步:创建docker服务配置
# 文件目录定义
dockerServiceFile="/etc/systemd/system/docker.service"
# 写入内容
echo -e "[Unit]" > $dockerServiceFile
echo -e "Description=Docker Application Container Engine" >> $dockerServiceFile
echo -e "Documentation=https://docs.docker.com" >> $dockerServiceFile
echo -e "After=network-online.target firewalld.service" >> $dockerServiceFile
echo -e "Wants=network-online.target" >> $dockerServiceFile
echo -e "[Service]" >> $dockerServiceFile
echo -e "Type=notify" >> $dockerServiceFile
echo -e "# the default is not to use systemd for cgroups because the delegate issues still" >> $dockerServiceFile
echo -e "# exists and systemd currently does not support the cgroup feature set required" >> $dockerServiceFile
echo -e "# for containers run by docker" >> $dockerServiceFile
echo -e "ExecStart=/usr/bin/dockerd --data-root=/data/docker_lib" >> $dockerServiceFile
echo -e "ExecReload=/bin/kill -s HUP $MAINPID" >> $dockerServiceFile
echo -e "# Having non-zero Limit*s causes performance problems due to accounting overhead" >> $dockerServiceFile
echo -e "# in the kernel. We recommend using cgroups to do container-local accounting." >> $dockerServiceFile
echo -e "LimitNOFILE=infinity" >> $dockerServiceFile
echo -e "LimitNPROC=infinity" >> $dockerServiceFile
echo -e "LimitCORE=infinity" >> $dockerServiceFile
echo -e "# Uncomment TasksMax if your systemd version supports it." >> $dockerServiceFile
echo -e "# Only systemd 226 and above support this version." >> $dockerServiceFile
echo -e "#TasksMax=infinity" >> $dockerServiceFile
echo -e "TimeoutStartSec=0" >> $dockerServiceFile
echo -e "# set delegate yes so that systemd does not reset the cgroups of docker containers" >> $dockerServiceFile
echo -e "Delegate=yes" >> $dockerServiceFile
echo -e "# kill only the docker process, not all processes in the cgroup" >> $dockerServiceFile
echo -e "KillMode=process" >> $dockerServiceFile
echo -e "# restart the docker process if it exits prematurely" >> $dockerServiceFile
echo -e "Restart=on-failure" >> $dockerServiceFile
echo -e "StartLimitBurst=3" >> $dockerServiceFile
echo -e "StartLimitInterval=60s" >> $dockerServiceFile
echo -e "[Install]" >> $dockerServiceFile
echo -e "WantedBy=multi-user.target" >> $dockerServiceFile
# 添加可执行文件
chmod +x $dockerServiceFile
- 第四步:安装docker
# 解压
[root@SZD-L0519334 ~]# cd /data;tar -xvf docker-20.10.8.tar -C /usr/bin
- 第五步:重新加载配置文件 #启动Docker
[root@SZD-L0519334 data]# systemctl stop docker&&systemctl daemon-reload&&systemctl start docker
- 第八步:设置开机自启
[root@SZD-L0519334 data]# systemctl enable docker.service
常规操作
- docker自身
# 启动docker
systemctl start docker
# 停止docker
systemctl stop docker
# 查看状态
systemctl status docker
# 查看Docker版本
[root@SZD-L0519334 data]# docker -v
- 镜像相关操作
# 列出所有镜像
docker images
# 列出所有名字包含test1关键词的镜像
docker images|grep 'test1'
# 列出所有名字包含关键词 test1或test2 的镜像
docker images|grep -E 'test1|test2'
# 列出所有名字不包含test2关键词的镜像
docker images|grep -v 'test2'
# 删除docker 中的所有镜像
docker rmi $(docker images -q)
docker rmi $(docker images |awk '{print $3}')
# 删除docker 中含有关键词(k8s4)的的所有镜像
docker rmi $(docker images |grep k8s4|awk '{print $3}')
# 删除所有不使用的镜像
docker image prune -f -a
# 加载镜像
docker load -i test.tar.gz
# 修改镜像tag
docker tag test:tag1 test:tag2
# 镜像打包
docker save test:tag1| gzip > test_tag1.tar.gz
- 容器相关操作
# 列出运行中容器ID
docker ps
# 列出所有容器
docker ps -a
# 列出所有容器ID
docker ps -aq
# 列出运行中容器ID
docker ps -q
# 停止容器
docker stop 容器id
docker stop 容器名:容器tag
# 删除容器
docker rm 容器id
docker rm 容器名:容器tag
# 停止所有的容器
docker stop $(docker ps -aq)
# 删除所有容器
docker rm $(docker ps -aq)
# 设置容器自启动(kill 进程后会自启,docker stop 后不会自启)
docker update --restart=always 容器ID
# 关闭容器自启动
docker update --restart=no 容器ID
# 删除所有停止的容器
docker container prune -f
# 进入容器
sudo docker exec -it 容器ID /bin/bash
# 退出容器
exit
- 清理
# 清理未启动的容器和无用的镜像
docker system prune -a -f
镜像迁移
- 第一步:连接镜像仓库下拉镜像
# 连接仓库 语法
docker login -u [用户名] -p [密码] [仓库地址]
# 连接仓库 示例
docker login -u XIAOLI -p 123456 pase-hub.test.com.cn
# 拉取镜像 语法
docker pull [仓库地址]/[仓库]/[镜像名]:[镜像版本号]
# 拉取镜像 示例
docker pull pase-hub.test.com.cn/p0069/test:DEV-HRX-SRCB-LSRC2.0.20211230B19
- 第二步:镜像打包
# 压缩方式 语法
docker save [镜像名]:[镜像版本号] | gzip > [镜像名].tar.gz
# 压缩方式 示例
docker save test:DEV-HRX-SRCB-LSRC2.0.20211230B19 | gzip > test.tar.gz
# 非压缩方式 语法
docker save [镜像名]:[镜像版本号] > [镜像名].tar.gz
# 非压缩方式 示例
docker save test:DEV-HRX-SRCB-LSRC2.0.20211230B19 > d:/test.tar
- 第三步:镜像转移(镜像文件copy)
- 第四步:目标机加载镜像
# 语法
docker load -i [镜像名].tar.gz
# 示例
docker load -i test.tar.gz
docker load -i test.tar
- 第五步:修改tag添加目标镜像仓库地址*
# 语法
docker tag [镜像名]:[镜像版本号] [目标仓库地址]/[目标仓库名]/[镜像名]:[镜像版本号]
# 示例
docker tag testRegistryAddress1/Registry1/testImage:tag1 registry2.qq.com.cn/Registry2/testImage:tag1
- 第六步:把镜像推到目标镜像仓库
# 登录 语法
docker login -u [客户仓库用户名] -p [客户仓库密码] [客户仓库地址]
# 登录示例
docker login -u testUser -p 12345678 registry2.qq.com.cn
# 推送 语法
docker push [客户仓库地址]/[客户仓库名]/[镜像名]:[镜像版本号]
# 推送 示例
docker push registry2.qq.com.cn/Registry2/testImage:tag1