Docker 是一种容器化技术,可让您快速构建、测试和部署应用程序,作为可移植、自给自足的容器,几乎可以在任何地方运行。
在本教程中,我们将介绍如何在 CentOS 7 上安装 Docker CE 并探索基本的 Docker 概念和命令。
先决条件#
在继续本教程之前,请确保满足以下先决条件:
- CentOS 7服务器
- 您以具有 sudo 权限的非 root 用户身份登录。你检查本指南关于如何创建新的 sudo 用户。
在 CentOS 上安装 Docker#
尽管 Docker 包在 CentOS 7 官方存储库中可用,但它可能并不总是最新版本。推荐的方法是从 Docker 的存储库安装 Docker。
要在 CentOS 7 服务器上安装 Docker,请按照以下步骤操作:
-
首先更新系统软件包并安装所需的依赖项:
sudo yum update
sudo yum install yum-utils device-mapper-persistent-data lvm2
-
接下来,运行以下命令将 Docker 稳定存储库添加到您的系统:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
现在 Docker 存储库已启用,请使用 yum 安装最新版本的 Docker CE(社区版),方法是键入:
sudo yum install docker-ce
-
安装 Docker 软件包后,启动 Docker 守护进程并使其在启动时自动启动:
sudo systemctl start docker
sudo systemctl enable docker
-
要验证 Docker 服务是否正在运行,请输入:
sudo systemctl status docker
输出应如下所示:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-10-31 08:51:20 UTC; 7s ago
Docs: https://docs.docker.com
Main PID: 2492 (dockerd)
CGroup: /system.slice/docker.service
├─2492 /usr/bin/dockerd
└─2498 docker-containerd --config /var/run/docker/containerd/containerd.toml
-
在撰写本文时,Docker 当前的稳定版本是,18.06.1
,打印 Docker 版本类型:
docker -v
Docker version 18.06.1-ce, build e68fc7a
不使用 sudo 执行 Docker 命令#
默认情况下,管理 Docker 需要管理员权限。如果您想以非 root 用户身份运行 Docker 命令而不添加前缀sudo你需要将您的用户添加到 docker 组它是在安装 Docker CE 包期间创建的。您可以通过输入以下内容来做到这一点:
sudo usermod -aG docker $USER
$USER
is an 环境变量保存您的用户名。
注销并重新登录,以便刷新组成员身份。
要验证 Docker 是否已成功安装并且您可以在没有 sudo 的情况下运行 docker 命令,请发出以下命令来下载测试映像,run将其放入容器中,打印“Hello from Docker”消息并退出:
docker container run hello-world
输出应如下所示:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Docker 命令行界面#
现在我们已经安装了可用的 Docker,让我们回顾一下 docker CLI 的基本语法。
docker 命令行采用以下形式:
docker [option] [subcommand] [arguments]
您可以通过键入列出所有可用命令docker
不带参数:
docker
如果您在任何方面需要更多帮助[subcommand]
,只需输入:
docker [subcommand] --help
Docker 镜像#
Docker 镜像由一系列层组成,代表镜像中的指令Dockerfile组成可执行软件应用程序。映像是一个不可变的二进制文件,包括应用程序和所有其他依赖项,例如运行应用程序所需的二进制文件、库和指令。简而言之,Docker 镜像本质上是 Docker 容器的快照。
Docker Hub 是基于云的注册表服务,除其他功能外,还用于将 Docker 映像保存在公共或私有存储库中。
要在 Docker Hub 存储库中搜索图像,只需使用search
子命令。例如,要搜索 CentOS 映像,请运行:
docker search centos
输出应如下所示:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 4257 [OK]
ansible/centos7-ansible Ansible on Centos7 109 [OK]
jdeathe/centos-ssh CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x86_… 94 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 52 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 40 [OK]
tutum/centos Simple CentOS docker image with SSH access 39
正如您所看到的,搜索结果打印了一个包含五列的表格,NAME
, DESCRIPTION
, STARS
, OFFICIAL
and AUTOMATED
。官方镜像是Docker与上游合作伙伴共同开发的镜像。
如果我们想下载 CentOS 7 的官方版本,我们可以使用image pull
子命令:
docker image pull centos
Using default tag: latest
latest: Pulling from library/centos
469cfcc7a4b3: Pull complete
Digest: sha256:989b936d56b1ace20ddf855a301741e52abca38286382cba7f44443210e96d16
Status: Downloaded newer image for centos:latest
根据您的互联网速度,下载可能需要几秒钟或几分钟。下载图像后,我们可以列出图像:
docker image ls
输出应如下所示:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest e38bc07ac18e 3 weeks ago 1.85kB
centos latest e934aafc2206 4 weeks ago 199MB
如果由于某种原因你想删除图像,你可以使用image rm [image_name]
子命令:
docker image rm centos
Untagged: centos:latest
Untagged: centos@sha256:989b936d56b1ace20ddf855a301741e52abca38286382cba7f44443210e96d16
Deleted: sha256:e934aafc22064b7322c0250f1e32e5ce93b2d19b356f4537f5864bd102e8531f
Deleted: sha256:43e653f84b79ba52711b0f726ff5a7fd1162ae9df4be76ca1de8370b8bbf9bb0
Docker容器#
图像的实例称为容器。容器代表单个应用程序、进程或服务的运行时。
这可能不是最合适的比较,但如果您是一名程序员,您可以将 Docker 映像视为类,将 Docker 容器视为类的实例。
我们可以使用以下命令启动、停止、删除和管理容器docker container
子命令。
以下命令将启动基于 CentoOS 映像的 Docker 容器。如果本地没有该镜像,它会先下载:
docker container run centos
乍一看,你可能觉得什么都没发生。嗯,事实并非如此。 CentOS容器在启动后立即停止,因为它没有长时间运行的进程,并且我们没有提供任何命令,因此容器启动,运行一个空命令,然后退出。
开关-it
允许我们通过命令行与容器交互。要启动交互式容器类型:
docker container run -it centos /bin/bash
正如您从输出中看到的,一旦容器启动,命令提示符就会更改,这意味着您现在正在工作从容器内部
:
[root@719ef9304412 /]#
To 列出正在运行的容器:
, 类型:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ab8e16d567 centos "/bin/bash" 22 minutes ago Up 22 minutes ecstatic_ardinghelli
要查看正在运行和已停止的容器,请将其传递给-a
switch:
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ab8e16d567 centos "/bin/bash" 22 minutes ago Up 22 minutes ecstatic_ardinghelli
c55680af670c centos "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago modest_hawking
c6a147d1bc8a hello-world "/hello" 20 hours ago Exited (0) 20 hours ago sleepy_shannon
要删除一个或多个容器,只需从上面复制容器 ID(或多个 ID)并将其粘贴到container rm
子命令:
docker container rm c55680af670c
结论#
您已经学习了如何在 CentOS 7 计算机上安装 Docker 以及如何下载 Docker 映像和管理 Docker 容器。您可能还想阅读Docker 组合,它允许您定义和运行多容器 Docker 应用程序。
本教程仅涉及 Docker 生态系统的皮毛。在接下来的一些文章中,我们将继续深入探讨 Docker 的其他方面。要了解更多关于 Docker 的信息,请查看官方Docker 文档
.
如果您有任何疑问或意见,请在下面留言。