安装
-
第一步:上传
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