docker常用命令与部署方式

本文详细介绍了Docker的基本命令,如登录、查找、拉取和推送镜像,构建、重命名及查看镜像,启动容器,管理镜像和容器等。还涵盖了Docker的高级使用,包括删除none镜像的正确方式,export与save命令的区别,以及如何搭建私有仓库和更换国内镜像源。此外,还提到了Docker在CentOS上的安装方法,包括在线和离线安装步骤。

大家都知道Docker Engine是一种开源容器化技术,主要用于构建和容器化应用程序。Docker Engine 充当客户端 - 服务器应用程序,具有如下特点:

  • 具备长时间运行的守护进程的服务dockerd;
  • API 指定程序可以用来与 Docker 守护程序交互和指令接口;
  • 命令行界面 (CLI) 客户端docker。

1.、Docker常用命令

(1) 登录本地仓库
docker login 仓库地址 --username xx --password xx

(2) 查找镜像
docker images| grep 镜像名称

(3) 拉取镜像
docker pull 镜像名称

(4) 推送镜像
docker push 镜像名称

(5) 查看镜像详情

 docker inspect imageId
 docker inspect 容器名称 | grep IPAddress  #查看Docker容器ip

(6) 从Dockerfile文件构建镜像

 docker build -t 镜像名称:Tag   **.**  
 示例:
 docker build -t acimagehub.com.cn/projectCode_dev/cdp-export:202105_XM_0525_v1.01 .   #Dockerfile需在当前目录docker build -t acimagehub.com.cn/projectCode_dev/cdp-export:202105_XM_0525_v1.01 -f 所在目录的Dockerfile文件 .  #例如/opt/Dockerfile
 
 202105:月度,0525:版本分支,v1.01:版本号
 
 docker history 镜像名称:Tag  #查看镜像构建历史

(7) 重命名镜像名称

 说明:重命名后会生成一个新的镜像,将旧镜像删除即可
 #命令格式:
 docker  tag  镜像id  仓库:标签
 或:
 docker  tag  旧镜像名  新镜像名
 # docker tag 470671670cac mysql:latest

(8)镜像搜索
docker search 镜像名称 #需要联网或联本地仓库

(9)从镜像导出tar包

 docker save [options] images [images...] 
 命令:
 docker save 镜像名 > 镜像名.tar或
 或
 docker image save -o 镜像.tar 镜像 
  
 示例:
 docker save nginx >/opt/nginx.tar
 或
 docker image save -o nginx.tar docker.io/nginx:latest
  
 `说明`: 其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是`源镜像名(name:tag)`

(10)加载镜像tar包

 docker load [options]cat 镜像.tar | docker load
 示例:
 docker load nginx.tar

(11)从容器导出tar包

 docker export [options] container
 示例:
 docker export -o nginx-test.tar nginx-test
  
 区别:其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是`源容器名(name)`

(12)加载容器tar包

 docker import [options] file|URL|- [REPOSITORY[:TAG]]
 示例:
 docker import nginx-test.tar nginx:imp
 或
 cat nginx-test.tar | docker import - nginx:imp

(13)启动镜像

 docker run -it 镜像ID  /bin/bash
 示例:
 docker run -it 470671670 /bin/bash
 或:
 docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
 `参数说明`:
  -itd:在容器中打开一个伪终端进行交互操作,并在后台运行; 
  -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化; 
  -p:映射端口,访问宿主机的5000端口就访问到registry容器的服务了;
  --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器; 
  --name registry:创建容器命名为registry,你可以随便命名;
  registry:latest:这个是刚才pull下来的镜像;

(14)查看容器进程
docker ps
docker ps --all

(15) 查看容器PID

 docker container top <container>
 docker container inspect <container>
 示例:
 docker container top redis              #输出PID和其他信息docker inspect -f '{{.State.Pid}}' redis  #直接输出PID

(16) 删除镜像

 >删除所有容器:
  docker stop $(docker ps -a -q)
  docker rm $(docker ps -a -q)
 >删除images:
  docker rmi <image id>
 >删除untagged images(id为<None>):
  docker rmi $(docker images | grep "^" | awk "{print $3}")
 >删除全部image:
  docker rmi $(docker images -q)

(17)进入容器

 dcker exec [OPTIONS] CONTAINER COMMON [ARG...]
 示例:
 docker exec -it 775c7c9ee1e1 /bin/bash

(18) 查看容器日志

 docker logs -f -t --tail 行数 容器名
 示例:
 docker logs -f -t --tail 10 775c7c9ee1e1

2、docker高级使用

(1)删除none的镜像

 docker images
 docker rmi $(docker images | grep "none" | awk '{print $3}')  //直接删除镜像会报错
 #删除none镜像的正确方式
 docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') //停止容器
 docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') //删除容器
 docker rmi $(docker images | grep "none" | awk '{print $3}') //删除镜像

(2)export和save命令使用说明
export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出

基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,nginx:latest是save导出load导入的,nginx:imp是export导出import导入的。
在这里插入图片描述
使用说明:若是只想备份images,使用save、load即可若是在启动容器后,容器内容有变化,需要备份,则使用export、import。

3、搭建docker私有仓库

参考文档:
https://www.php.cn/docker/463389.html
https://www.php.cn/docker?p=2

4、如何更换国内镜像源

4.1、从官方下载

通过命令,直接从中国官方镜像加速地址下载,可通过 registry.docker-cn.com 访问

docker pull registry.docker-cn.com/myname/myrepo:mytag

``:除非您修改了Docker守护进程的–registry-mirror参数,否则您将需要完整地指定官方镜像的名称。例如,library/ubuntu、library/redis、library/nginx

4.2、 Docker守护进程配置加速器

通过配置文件启动Docker,修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。

sudo vim /etc/docker/daemon.json
{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}
#阿里镜像地址:http://mirrors.aliyuncs.com
#网易镜像地址:http://hub-mirror.c.163.com
修改保存后,重启 Docker 以使配置生效。
sudo systemctl daemon-reload
sudo systemctl restart docker

或者一步到位:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://db1jo88d.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

5、Docker部署

5.1、部署前提

(1)Docker 要求 CentOS 系统的内核版本高于 3.10 ,安装前提条件验证CentOS 版本是否支持 Docker 。

 通过 uname -r 命令查看你当前的内核版本

(2)查看CentOS版本,本次安装以CentOS 7.8为例

 通过 cat /etc/redhat-release 命令查看OS版本

5.2、在线安装

请参考官方文档:https://docs.docker.com/engine/install/centos/ ,总结起来如下几个步骤:
(1)添加镜像源

 yum install -y yum-utils
 #建议使用国内镜像源
 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(2)安装docker

 #安装最新版本
 yum install docker-ce docker-ce-cli containerd.io
 #安装指定版本
 yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io

(3)启动docker

 systemctl enable docker #设置开机自动启动
 systemctl start docker #启动docker

在这里插入图片描述

5.3、离线安装

(1) 依赖包如下:

第一部分 下载地址(http://mirrors.aliyun.com/docker-ce/linux/centos/ 或 https://download.docker.com/linux/centos/)
docker-ce-18.09.9-3.el7.x86_64.rpm
docker-ce-cli-18.09.9-3.el7.x86_64.rpm
containerd.io-1.2.6-3.3.el7.x86_64.rpm

第二部分 下载地址(http://mirrors.163.com/centos/7/os/x86_64/Packages/)
audit-libs-python-2.8.5-4.el7.x86_64.rpm
checkpolicy-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-14.el7.x86_64.rpm
libcgroup-0.41-21.el7.x86_64.rpm
python-IPy-0.75-6.el7.noarch.rpm
policycoreutils-python-2.5-34.el7.x86_64.rpm
policycoreutils-2.5-34.el7.x86_64.rpm
setools-libs-3.3.8-4.el7.x86_64.rpm

第三部分 下载地址(http://mirror.centos.org/centos/7/extras/x86_64/Packages/)
container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
在这里插入图片描述

(2)执行安装
将所有依赖放到Linux的同一个文件夹,如下图所示:
在这里插入图片描述

 执行本地部署命令:
 yum localinstall *.rpm -y

在这里插入图片描述
(3) 启动docker
设置docker开机自动启动,并启动服务

systemctl enable docker
systemctl start docker
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广漂一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值