Docker安装

11/18/2023 docker容器

# 一、前提说明

Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。
Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率集合等同于所部署的Linux主机。因此,Docker必须部署在Linux内核的系统上。如果其他系统想部署Docker就必须安装一个虚拟Linux环境。
在Windows上部署Docker的方法都是先安装一个虚拟机,并在安装Linux系统的虚拟机中运行Docker。
前提条件:
目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x
查看自己Linux系统的内核:uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
image.png

# 二、安装步骤

# 1、卸载旧版本

旧版本的Docker使用dockerdocker-engine。在尝试安装新版本以及相关的依赖项之前,需要先卸载任何此类旧版本。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
1
2
3
4
5
6
7
8

# 2、yum安装gcc相关

GCC是一套开源的编译器工具集,用于将源代码编译为可执行文件。安装GCC主要是为了满足Docker的构建需求。在构建Docker镜像时,可能会涉及到编译一些源代码或者构建一些依赖库。这些操作可能需要使用C、C++等编程语言,并且需要通过GCC来进行编译。

yum -y install gcc
yum -y install gcc-c++
1
2

# 3、安装需要的软件包

在新主机上首次安装Docker Engine之前,您、需要设置Docker存储库。之后,我们可以从存储库中安装和更新Docker。
安装yum-utils包(它提供了yum-config-manager实用程序)并设置存储库。

yum -y install yum-utils
1

# 4、设置yum镜像源

Docker官方文档在这一步给出了官方的yum源地址:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1

但是官方的yum源是在国外的,我们在使用时经常会出现网络不通的情况,例如:

报错:
1 [Errno 14] curl#35 - TCP connection reset by peer
2 [Errno 12] curl#35 - Timeout

因此在这里我们选择使用国内的阿里云镜像源,主要解决下载速度的问题。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1

image.png

# 5、更新yum软件包索引

yum makecache fast
1

# 6、安装Docker CE

yum -y install docker-ce docker-ce-cli containerd.io
1

image.png

# 7、启动Docker

systemctl start docker
1

# 8、测试

通过运行hello-world镜像验证Docker引擎安装是否成功。

docker run hello-world
1

此命令下载测试映像并在容器中运行。当容器运行时,它会打印一条确认消息并退出。
image.png

# 9、卸载

# 关闭docker服务
systemctl stop docker
# 卸载docker
yum remove docker-ce docker-ce-cli containerd.io
# 主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像、容器和卷,需要执行以下操作:
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
1
2
3
4
5
6
7

# 三、阿里云镜像加速

docker下载镜像默认的路径速度会比较慢,因此可以选择添加阿里云的镜像加速,注意这里可以理解为是给docker配置的,而前边的换源是为yum换的,两者有区别。
首先注册一个自己的阿里云账户,步骤此处省略,我们登录到阿里云开发者平台。
image.png
点击控制台,左上角产品与服务中选择容器镜像服务。
image.png
点击左侧目录镜像加速器即可看到属于自己的镜像加速器地址。
image.png
在linux中使用如下命令进行配置:

# 创建对应目录
mkdir -p /etc/docker
# 创建daemon.json文件并追加以下内容
tee /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"]
}
EOF
1
2
3
4
5
6
7
8

image.png
至此镜像加速配置已完成,重启让配置生效。

systemctl daemon-reload
systemctl restart docker
1
2

# 四、永远的HelloWorld

启动Docker后台容器(测试运行 hello-world)

docker run hello-world
1

image.png
输出这段提示以后,hello world就会停止运行,容器自动终止。
那么run究竟干了什么?
image.png

# 五、底层原理

为什么Docker会比VM虚拟机快?
(1)docker有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
image.png
image.png