初识Docker
这里推荐一个Docker中午文档
何为Docker
Docker 使用 Google
公司推出的 Go 语言 进行开发实现,基于 Linux
内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7
版本以后开始去除 LXC
,转而使用自行开发的 libcontainer,从 1.11
版本开始,则进一步演进为使用 runC 和 containerd。
runc
是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。
containerd
是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker
技术比虚拟机技术更为轻便、快捷。
总结:Docker比传统虚拟化技术更轻巧。例如,我们想在Linux
系统跑一个程序就得通过VMware
创建CentOS
系统时会提示你是否加载声卡等选项,这是直接虚拟化了整套电脑的软硬件,而Docker
只会封装你这个程序最低运行标准所需的数据。
Linux安装Docker
查看Docker官网文档,Docker
对CentOS系统只支持CenOS 7
以上的版本,因此可以输一下命令查看当前CentOS系统的版本:
[root@TestMachine ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
卸载旧版本Docker
如果之前安装过,可以通过一下命令卸载,如没,救跳过。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装gcc
如果没有安装gcc,需要先安装gcc。(一般配置好Linux环境的都会有)。
yum -y install gcc
yum -y install gcc-c++
使用 rpm 存储库安装
在新主机上首次安装 Docker Engine 之前,您需要 需要设置 Docker 存储库。之后,您可以安装和更新 存储库中的 Docker。
- 设置存储库
安装yum-utils
软件包(提供yum-config-manager
实用程序)并设置存储库。
yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
官网推荐设置Docker
存储库使用这个命令:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
将存储库设置成国外,在国内访问会很麻烦,因此这里替换成ailiyun
源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker引擎
yum install docker-ce docker-ce-cli containerd.io
该命令会安装最新版本的Docker,要测试版本可以执行这个命令:yum-config-manager --enable docker-ce-test
测试Docker
- 启动Docker
systemctl start docker
- 查看Docker版本
[root@TestMachine ~]# docker version
Client: Docker Engine - Community
Version: 24.0.7
API version: 1.43
Go version: go1.20.10
Git commit: afdd53b
Built: Thu Oct 26 09:11:35 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.7
API version: 1.43 (minimum version 1.12)
Go version: go1.20.10
Git commit: 311b9ff
Built: Thu Oct 26 09:10:36 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.25
GitCommit: d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
runc:
Version: 1.1.10
GitCommit: v1.1.10-0-g18a0cb0
docker-init:
Version: 0.19.0
GitCommit: de40ad0
- 执行镜像
[root@TestMachine ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:c79d06dfdfd3d3eb04cafd0dc2bacab0992ebc243e083cabe208bac4dd7759e0
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Docker的执行过程会先查看本地是否有该镜像,如果没有就会去远程仓库拉取镜像到本地,再执行该镜像,因此会提示:Unable to find image 'hello-world:latest' locally
卸载 Docker 引擎
-
卸载 Docker Engine、CLI、containerd 和 Docker Compose 包:
yum remove docker-ce docker-ce-cli containerd.io
-
主机上的映像、容器、卷或自定义配置文件 不会自动删除。要删除所有映像、容器和卷,请执行以下操作:
rm -rf /var/lib/docker rm -rf /var/lib/containerd
您必须手动删除任何编辑的配置文件。
镜像加速
阿里云为每个用户提供个人镜像加速,可以自行去阿里云官网操作。
操作完后执行hello-world
[root@TestMachine ~]# docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
成功打印信息,说明Docker启动没问题