记录: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日