记录:364

场景:在CentOS 7.9操作系统上,安装Docker和应用Docker以及Docker常用命令。

版本:

操作系统:CentOS 7.9

Docker版本:Docker 19.03.15

1.基础知识

1.1Docker

Docker is a product for you to build, ship and run any application as a lightweight container.

解析:Docker可以构建、传输、运行任何一个应用作为一个轻量级容器。

Docker containers are both hardware-agnostic and platform-agnostic. This means they can run anywhere, from your laptop to the largest cloud compute instance and everything in between and they don't require you to use a particular language, framework or packaging system. That makes them great building blocks for deploying and scaling web apps, databases, and backend services without depending on a particular stack or provider.

解析:Docker容器既与硬件无关,也与平台无关。可以运行在任何地方,从笔记本电脑到最大规模的云计算实例。它不要特定语言、框架和打包系统。这使它们成为部署和扩展web应用程序、数据库和后端服务的绝佳构建块,而不依赖于特定堆栈或提供商。

1.2Docker

Docker可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

1.3Docker和Docker CE

Docker EE:Docker Enterprise Edition,Docker企业版。闭源收费。

Docker CE:Community Edition Edition,Docker社区版。开源免费。

1.4Docker资源地址

(1)Docker资源

Docker官方主页: https://www.docker.com

Docker官方文档: https://docs.docker.com/

Docker Hub: https://hub.docker.com

Docker源代码仓库: https://github.com/moby/moby

Docker常见问题: https://docs.docker.com/engine/faq/

Docker的API: https://docs.docker.com/develop/sdk/

(2)国内镜像加速服务

网易镜像:http://hub-mirror.c.163.com

官方中国镜像:https://registry.docker-cn.com

ustc的镜像:https://docker.mirrors.ustc.edu.cn

阿里云的镜像加速服务:https://q4fikql8.mirror.aliyuncs.com

注意:阿里云的镜像加速服务,需要到阿里云注册一个账号,分配一个镜像加速服务。

2.安装Docker

2.1配置国内yum源

使用阿里云开源镜像站的Docker CE镜像。

地址:https://developer.aliyun.com/mirror/docker-ce

方式一:从镜像站下载yum源配置文件

(1)下载配置文件到本地

命令:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(2)修改配置文件中的docker-ce官网地址

命令:sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

解析:使用sed工具,把download.docker.com字符串替换为mirrors.aliyun.com/docker-ce。命令中-i是前缀,s+是替换字符串。

注意:下载的docker-ce.repo,如果没替换,则使用sed工具替换。

方式二:直接添加yum源镜像文件

(1)找到对应系统版本的docker-ce地址

镜像地址:https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable

(2)编辑和添加yum源配置

编辑命令:vi /etc/yum.repos.d/docker-ce.repo

编辑内容:

[docker-ce]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7.9/x86_64/stable
gpgcheck=0
enabled=1

解析:[docker-ce],是仓库ID,在本地配置文件中是唯一;enabled=1,使能配置文件,enabled=0,关闭配置文件;gpgcheck=0,不校验。

2.2安装docker-ce

(1)安装

安装命令:yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15

查看版本:docker --version

解析:安装指定版本号19.03.15,服务端和客户端都需指定。查看版本号,确认安装成功。

(2)安装目录

查看目录:find / -name docker

解析:安装后生成的目录:

/run/docker
/etc/docker
/var/lib/docker
/usr/bin/docker
/usr/share/bash-completion/completions/docker
/usr/libexec/docker

2.3启动docker

启动命令:systemctl start docker

查看状态:systemctl status docker

解析:docker启动后,可以查看docker服务状态,确认启动成功

2.4设置开机启动

设置开机启动:systemctl enable docker

查看设置状态:systemctl list-unit-files | grep docker

解析:设置开机启动后,可以查看设置状态是否成功。

2.5停止docker

停止命令:systemctl stop docker

解析:docker停止后,可以查看docker服务状态,确认启动成功

2.6重启docker

重启命令:systemctl restart docker

加载配置后重启:systemctl daemon-reload && systemctl restart docker

2.7卸载docker-ce

(1)卸载

命令:yum remove -y docker-ce-19.03.15 docker-ce-cli-19.03.15

解析:使用yum remove卸载已安装的软件包。

(2)删除docker相关的目录和文件

查看目录:find / -name docker

删除目录:rm -rf /etc/docker/

解析:使用find命令查看所有docker相关目录,使用rm -rf删除目录和文件。

2.8查看docker信息

启动docker后,可以查看docker整体信息。

命令:docker info

解析:docker信息包括Client和Server两大块信息。Server中包括Containers、Images、Logging Driver、Cgroup Driver、Plugins、Registry、Insecure Registries、 Docker Root Dir以及宿主机基础信息等。

2.9docker的配置文件

安装完成Docker-ce后,配置文件目录是/etc/docker。

主要配置文件:/etc/docker/daemon.json

注意:默认没有daemon.json,首次配置需创建daemon.json文件。

3.使用Docker安装redis-6.2.8

3.1在hub.docker查找需求版本

(1)登录hub.docker

官网地址:https://hub.docker.com/

在hub.docker中有已经发布的各种开源容器镜像。

(2)搜索redis

(3)找到redis并记录下载命令

命令:docker pull redis:6.2.8

3.2下载镜像

(1)下载镜像

命令:docker pull redis:6.2.8

解析:使用docker pull下载,默认从官网中下载。

(2)查看已经下载镜像

命令:docker images

解析:已经下载镜像存储在本地,包括REPOSITORY、TAG、IMAGE ID、CREATED、SIZE信息。

3.3安装容器

(1)创建容器

创建容器:docker run -dit --name redis-27012 -p 27012:6379 redis:6.2.8

(2)参数解析

解析:-d,后台运行;-t,分配一个伪终端;-i,即使没有附加也保持STDIN打开;--name redis-27012,指定容器的名称为redis-27012;-p 27012:6379,前面端口号27012是映射到宿主机的端口,6379是容器内的端口;redis:6.2.8,指定镜像和版本,如果没有指定,则默认使用本地最新版本。

(3)查看redis相关目录和文件

命令:find / -name redis*

3.4查看容器列表

(1)查看容器

命令:docker ps

解析:查看正在运行的容器。

命令:docker ps -a

解析:查看所有容器(包括各种状态的容器)。

(2)参数解析

字段:CONTAINER ID是容器标识ID;IMAGE,容器使用的镜像;COMMAND,使用命令;CREATED,容器创建时间;PORTS,容器端口映射,27012->6379/tcp宿主机端口27012和容器内部端口6379映射。NAMES,容器名称;STATUS,容器当前状态。

STATUS字段列表:Created(已创建)、Restarting(重启中)、Running 或 Up(运行中)、Removing(迁移中)、Paused(暂停)、Exited(停止)、Dead(死亡)。

4.Docker常用操作

4.1下载镜像

下载格式:docker pull 镜像名称:镜像版本

下载命令:docker pull redis:6.2.8

解析:使用docker pull下载,从容器镜像仓库下载下载。

4.2查看镜像列表

命令实例:docker images

解析:查看本地全部镜像列表。

命令格式:docker images REPOSITORY

命令实例:docker images redis

解析:查看本地REPOSITORY相同的全部镜像列表。

4.3搜索镜像

命令格式:docker search 镜像名称

命令实例:docker search httpd

解析:从Docker Hub中搜索镜像。

4.4创建容器

使用已经下载到本地的镜像,创建容器。

(1)docker create创建

创建容器:docker create --name redis-27013 -p 27013:6379 redis:6.2.8

解析:使用docker create创建容器,创建完成后不会立运行容器,需使用命令启动。

(2)docker run创建并营销

创建容器:docker run -dit --name redis-27012 -p 27012:6379 redis:6.2.8

解析:使用docker run创建容器,创建完成后会立即运行容器。

4.5查看容器列表

命令:docker ps -a

解析:找出容器CONTAINER ID,例如:8073e0bd334c。

4.6启动容器

启动格式:docker start 容器ID

启动命令:docker start 8073e0bd334c

解析:启动容器,一个已经创建的容器,端口映射关系已经创建完成。

4.7停止容器

停止格式:docker stop 容器ID

停止命令:docker stop 8073e0bd334c

解析:停止容器会返回容器ID。

4.8重启容器

重启格式:docker restart 容器ID

重启实例:docker restart 8073e0bd334c

解析:重启容器会返回容器ID。

4.9进入容器

命令格式:docker exec 容器ID 命令

命令实例:docker exec -it 8073e0bd334c /bin/bash

命令实例:docker exec -it 8073e0bd334c bash

命令实例:docker exec -it redis-27012 bash

解析:执行docker exec命令时,使用容器ID和容器名称都可以进入容器内部。

退出容器:exit

4.10查看容器基础信息

命令格式:docker inspect 容器ID

命令实例:docker inspect b28cd322912a

解析:以JSON格式返回容器的基础信息,比如容器的ID、状态、镜像等常见配置信息;比如容器与宿主机之间的网络、端口、文件目录、驱动等信息。

4.11更新容器配置

命令格式:docker update [OPTIONS] CONTAINER [CONTAINER...]

命令实例:docker update --cpus 1  b28cd322912a

解析:限制cpu数量为1。

4.12 kill容器

命令格式:docker kill 容器ID

命令实例:docker kill b28cd322912a

解析:kill容器会返回容器ID。

4.13删除容器

命令格式:docker rm 容器ID

命令实例:docker rm 8073e0bd334c

解析:删除容器会返回容器ID。

4.15删除镜像

命令格式:docker rmi 镜像ID

命令实例:docker rmi 83a5aeccc5e0

解析:删除容器会返回镜像ID,一个有容器正在运行的镜像不能删除。

4.16查看容器日志

命令格式:docker logs [OPTIONS] 容器ID

命令实例:docker logs -f 8073e0bd334c

解析:-f,对于正在运行的容器,会持续输出日志。

4.17容器和本地文件系统之间拷贝数据

(1)本地拷贝到容器内部

命令格式:docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

命令实例:docker cp /home/apps/workInLocal/hz.txt 8073e0bd334c:/home/workInDocker

(2)容器内部拷贝到本地

命令格式:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

命令实例:docker cp 8073e0bd334c:/home/workInDocker/hz.txt  /home/hz01.txt

4.18查看容器内部文件系统文件和目录变化

命令格式:docker diff [OPTIONS] 容器ID

命令实例:docker diff 3645454c4d2f

解析:看到容器内部的文件和目录变化,如果有的话。

4.19导出容器的文件系统

命令格式:docker export [OPTIONS] 容器ID

命令实例:docker export -o localFile 3645454c4d2f

解析:把容器内部文件系统导出到本地的一个文件。

4.20根据容器创建镜像

(1)创建镜像

命令格式:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

命令实例:docker commit 3645454c4d2f myredis:6.2.8.1

解析:根据一个已经在运行的容器,创建一个新的镜像。

(2)查看镜像

命令:docker images myredis

解析:可以看到镜像已经生成。

(3)应用镜像

创建容器:docker run -dit --name redis-27014 -p 27014:6379 myredis:6.2.8.1

解析:使用新创建的镜像myredis:6.2.8.1,创建容器

4.21查看镜像历史信息

命令格式:docker history [OPTIONS] IMAGE

命令实例:docker history -H httpd:2.4.54

解析:可以查看镜像包历史变更信息。

4.22查看docker信息

命令实例:docker info

解析:显示docker在系统侧的信息。包括docker管理的容器、镜像、驱动、插件、以及系统信息。

4.23暂停容器

命令格式:docker pause 容器ID

命令实例:docker pause 94a43200c09e

解析:执行后容器状态为:Paused。

4.24查看容器与宿主机之间映射端口

命令格式:docker port 容器ID

命令实例:docker port 94a43200c09e

解析:查看容器和本地之间端口映射。

4.25重命名容器名称

命令格式:docker rename 容器ID 新名称

命令实例:docker rename 94a43200c09e myredis-27014

解析:把容器名称重新命名为myredis-27014。

4.26把镜像保存为文件

命令格式:docker save [OPTIONS] IMAGE

命令实例:docker save -o myimg 22f0fd7102c4

解析:把镜像22f0fd7102c4保存到一个文件中。

4.27查看容器的实时统计信息

命令实例:docker stats

解析:查看一个容器统计信息,包括CPU、内存、网络IO、块IO、PID等信息的实时统计。

命令格式:docker stats [OPTIONS] 容器ID

命令实例:docker stats 3645454c4d2f

解析:查看全部容器统计信息,包括CPU、内存、网络IO、块IO、PID等信息的实时统计。

4.28镜像修改版本号

命令格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

命令实例:docker tag myredis:6.2.8.1 myredis:6.2.8.2

解析:镜像修改为版本号,只是tag变了,镜像ID、SIZE等其它字段不变。

4.29查看容器的进程信息

命令格式:docker top CONTAINER [ps OPTIONS]

命令实例:docker top 94a43200c09e

解析:查看容器的进程信息,包括UID、PID、CMD等。

4.30取消暂停

命令格式:docker unpause 容器ID

命令实例:docker unpause 94a43200c09e

解析:取消暂停,把容器的Paused状态变更为Up状态。

4.31查看docker版本

命令实例:docker version

解析:查看docker版本详细信息,包括引擎、容器、客户端等版本细节。

命令实例:docker --version

解析:只显示客户端版本信息。

4.32等待容器停止

命令格式:docker wait 容器ID

命令实例:docker wait 94a43200c09e

解析:容器停止时,能接收到返回值:0。

4.33登录Docker registry

本例登录本地搭建的harbor镜像仓库。

命令实例:docker login http://192.168.19.166:18021 -u admin -p Harbor12345

解析:http://192.168.19.166:18021是harbor服务器地址;-u是用户名;-p,指定密码。

4.34登出Docker registry

命令实例:docker logout

解析:默认是登出:Removing login credentials for https://index.docker.io/v1/

命令实例:docker logout http://192.168.19.166:18021

解析:登出搭建的私有仓库。

4.35下载镜像(Harbor镜像仓库)

命令实例:docker pull 192.168.19.166:18021/library/redis-photon:v2.3.5

解析:192.168.19.166:18021,本地搭建的harbor镜像仓库;/library/redis-photon:v2.3.5是镜像仓库的实际镜像。

4.36上传镜像(Harbor镜像仓库)

(1)修改docker配置信息

修改命令:vi /etc/docker/daemon.json

修改内容:

{
 "registry-mirrors":["http://192.168.19.166:18021"],
 "insecure-registries":["192.168.19.166:18021"]
}

加载配置和重启docker:systemctl daemon-reload && systemctl restart docker

(2)先把本地镜像打标签

命令:docker tag redis:7.0.7 192.168.19.166:18021/library/redis:7.0.7

解析:先把镜像打标签

(3)命令行登录Docker registry(Harbor)

命令实例:docker login http://192.168.19.166:18021 -u admin -p Harbor12345

解析:http://192.168.19.166:18021是harbor服务器地址;-u是用户名;-p,指定密码。

(4)推送

命令实例:docker push 192.168.19.166:18021/library/redis:7.0.7

解析:默认对推送到docker.io/library/redis;指定推送。

(5)命令行登出Docker registry(Harbor)

命令实例:docker logout http://192.168.19.166:18021

解析:登出Docker registry(Harbor),否则一直有效。

以上,感谢。

2022年12月20日

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐