# 一、前提说明
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命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。
# 二、安装步骤
# 1、卸载旧版本
旧版本的Docker使用docker
或 docker-engine
。在尝试安装新版本以及相关的依赖项之前,需要先卸载任何此类旧版本。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
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++
2
# 3、安装需要的软件包
在新主机上首次安装Docker Engine之前,您、需要设置Docker存储库。之后,我们可以从存储库中安装和更新Docker。
安装yum-utils
包(它提供了yum-config-manager
实用程序)并设置存储库。
yum -y install yum-utils
# 4、设置yum镜像源
Docker官方文档在这一步给出了官方的yum源地址:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
但是官方的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
# 5、更新yum软件包索引
yum makecache fast
# 6、安装Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
# 7、启动Docker
systemctl start docker
# 8、测试
通过运行hello-world
镜像验证Docker引擎安装是否成功。
docker run hello-world
此命令下载测试映像并在容器中运行。当容器运行时,它会打印一条确认消息并退出。
# 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
2
3
4
5
6
7
# 三、阿里云镜像加速
docker下载镜像默认的路径速度会比较慢,因此可以选择添加阿里云的镜像加速,注意这里可以理解为是给docker配置的,而前边的换源是为yum换的,两者有区别。
首先注册一个自己的阿里云账户,步骤此处省略,我们登录到阿里云开发者平台。
点击控制台,左上角产品与服务中选择容器镜像服务。
点击左侧目录镜像加速器即可看到属于自己的镜像加速器地址。
在linux中使用如下命令进行配置:
# 创建对应目录
mkdir -p /etc/docker
# 创建daemon.json文件并追加以下内容
tee /etc/docker/daemon.json
{
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"]
}
EOF
2
3
4
5
6
7
8
至此镜像加速配置已完成,重启让配置生效。
systemctl daemon-reload
systemctl restart docker
2
# 四、永远的HelloWorld
启动Docker后台容器(测试运行 hello-world)
docker run hello-world
输出这段提示以后,hello world就会停止运行,容器自动终止。
那么run究竟干了什么?
# 五、底层原理
为什么Docker会比VM虚拟机快?
(1)docker有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。