Docker-基础

容器:
是一个独立的空间,与虚拟化类似。但是虚拟化可以虚拟OS,使用容器不能虚拟OS。主要包括以下三部分:cgroups资源管理,namespace进程隔离,selinux安全。
namespace隔离:用户命名空间hostname隔离,网络命名空间隔离,文件系统命名空间隔离,进程命名空间隔离,信号量命名空间隔离。

Docker:
容器技术的一个应用,是是实现容器功能的软件,目前可以使用的容器技术有很多,docker只是其中之一。使用共享的公共库和程序(内核)。
容器的底层必须相同,例如:linux的容器只能是linux,不能是unix
容器的隔离性不如虚拟化
对于linux容器而言各个容器之间共享linux内核,安全有缺陷
selinux难以使用
监控和排错比较麻烦

一、安装部署Docker:

1、配置yum源:
	使用 rhel7-extras.iso这个镜像

2、安装软件包:
	yum -y install docker
	systemctl start docker
	systemctl enable docker
启动容器之后会多出一个名为docker0的交换机(虚拟交换机),本机上所有的容器通过这个容器交换机进行通信。

二、Docker镜像:

容器是基于镜像启动的,镜像存储在仓库当中
镜像相当于后端盘,使用cow技术,容器相当于前端盘(一层一层覆盖)
对前端盘的修改不会影响到后端盘。

三、Docker命令:

1、docker images	#查看可以使用的镜像
2、docker search nginx	#在仓库中搜索nginx相关镜像
3、docker pull docker.io/nginx	#下载镜像,docker.io/nginx是搜索到的镜像名字

4、docker save docker.io/nginx:latest -o mynginx.tar	#备份
# 容器名:标签名-->docker.io/nginx:latest 是一个镜像的唯一标识符
# -o 表示输出,容器的备份实质上是将容器打成一个tar包
5、docker load -i mynginx.tar	#恢复备份的镜像

6、docker ps [-a] [-qa]	#查看系统中正在运行的容器,a全部,qa只显示容器id

7、docker run -it docker.io/nginx:latest /bin/sh	#根据镜像创建容器,并运行
# 根据镜像docker.io/nginx:latest创建了一个容器并运行,每次使用这个命令创建的都是一个全新的镜像
# /bin/sh 指定了容器运行时候的解释器
# docker run 的参数:
# -t:表示再tty终端运行
# -i:交互式运行的
# -d:在后台运行
# 一般使用 -it 或者 -itd

8、docker history docker.io/nginx:latest	#查看镜像制作历史,封装了多少层

9、docker inspect docker.io/nginx:latest	#查看镜像的详细信息
# Env:表示环境变量
# Cmd:容器启动时执行的命令

10、docker rm 容器id	#删除容器,通过docker ps -a查看容器id,运行中的容器不能删除
11、docker rmi docker.io/nginx:latest	#删除镜像,在此之前应该删除容器。

12、docker start | stop | restart 容器id	#启动 | 关闭 | 重启容器

13、docker top 容器id	#查看容器的进程信息
# 在容器中启动一个服务,实际上就是在主机上开启一个进程,主机可以查看这个进程
# 在虚拟机中启动一个进程,在主机上是看不到的(完全隔离)

14、docker attach 容器id			#进入容器,执行exit后关闭容器,通常用于调试和查看报错信息
# ctrl + p + q	#先按p在按q,容器退出不关闭容器
15、docker exec [-it | -itd]	#进入容器,执行exit后容器在后台运行,不关闭

在centos的docker中,只有pid=1的用户在运行系统
systemctl start xxx 这个命令是由用户systemctl启动的,但是在docker中没有这个用户,因此需要使用服务本身的启动命令来启动服务,systemctl这个用户只是对这个服务本身的启动命令进行了统一的管理。
找/usr/lib/systemd/system/xxx.service

写总结的第七十三天!!!

<think>好的,我需要帮助用户通过yum正确安装Docker及其相关组件。首先,我应该回顾用户提供的引用内容,特别是引用[1]和引用[2],因为它们直接涉及安装和卸载步骤。 首先,用户可能已经安装了旧版本的Docker,根据引用[2],必须先卸载旧版本。步骤包括停止Docker服务,用yum remove卸载相关软件包,并删除残留文件。所以,我应该建议用户先执行这些卸载步骤,确保系统干净。 接下来,安装新版本。引用[1]给出了两种安装方式:安装特定版本或最新版本。用户的问题中没有指定版本,所以应该默认推荐安装最新版本。命令是sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin。需要确保用户正确执行这条命令。 另外,引用[4]提到安装时可能出现公钥错误。这可能是因为缺少GPG密钥。解决方法应该是导入Docker的官方GPG密钥,或者在yum命令中添加--nogpgcheck选项。不过,推荐先导入密钥,因为禁用GPG检查可能有安全风险。因此,步骤中需要包括添加Docker仓库和导入密钥的步骤,这可能用户之前没做导致错误。 引用[3]提到安装docker-compose,但用户的问题中已经包含docker-compose-plugin,所以可能需要确认是否需要额外的步骤,但根据引用[1],安装docker-compose-plugin已经通过yum完成,所以可能不需要单独安装。 最后,安装完成后,启动并启用Docker服务,以及验证安装是否成功,这些步骤也是必要的。用户可能需要知道如何测试Docker是否正常工作。 需要确保所有步骤顺序正确:卸载旧版本 -> 安装依赖 -> 添加仓库 -> 安装 -> 启动服务 -> 验证。 可能遗漏的步骤是添加Docker的yum仓库,因为默认的CentOS仓库可能不包含Docker CE。因此,用户需要先设置Docker的官方仓库,这涉及到安装yum-utils包,添加仓库,并更新yum缓存。这些步骤在引用中没有提到,但根据Docker官方文档,这是必须的,否则用户可能找不到docker-ce等包。 综上,正确的步骤应该是: 1. 卸载旧版本Docker(引用[2]) 2. 安装必要依赖包(yum-utils等) 3. 添加Docker的yum仓库 4. 安装所需软件包(引用[1]) 5. 处理可能的GPG错误(引用[4]) 6. 启动并启用服务 7. 验证安装 需要将这些步骤详细写出,并注意可能的错误处理,比如公钥问题。</think>以下是通过yum命令安装Docker及相关组件的分步指南: ### 一、卸载旧版本(必须操作) 1. 停止Docker服务 ```bash sudo systemctl stop docker ``` 2. 卸载旧版本组件 ```bash sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-engine docker-client docker-common ``` 3. 清理残留文件 ```bash sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd ``` 此步骤确保旧版本完全清除[^2] ### 二、安装前置依赖 1. 安装基础工具 ```bash sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` 2. 添加Docker官方仓库 ```bash sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ``` 3. 更新yum缓存 ```bash sudo yum makecache fast ``` ### 三、安装新版本组件 1. 安装最新版(推荐) ```bash sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` 或安装指定版本: ```bash sudo yum install docker-ce-23.0.3-1 docker-ce-cli-23.0.3-1 containerd.io-1.6.22-3.1.el7 docker-buildx-plugin-0.10.5-1.el7 docker-compose-plugin-2.17.3-1.el7 ``` [^1] ### 四、处理GPG错误 若出现`Public key for XXXXXXX.rpm is not installed`错误: ```bash sudo rpm --import https://download.docker.com/linux/centos/gpg ``` 然后重试安装命令[^4] ### 五、启动服务 ```bash sudo systemctl start docker sudo systemctl enable docker ``` ### 六、验证安装 ```bash sudo docker run hello-world ``` 成功输出包含`Hello from Docker!`即表示安装完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值