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 CE安装过程中创建的Docker组包。您可以输入以下内容:

sudo usermod -aG docker $USER

$USER是保存您的用户名的环境变量

注销并重新登录,以便刷新组成员身份。

要验证Docker是否已成功安装,并且您可以在不使用sudo的情况下运行docker命令,请发出以下命令,该命令将下载测试映像,在容器中运行它,打印“ 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 [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

如您所见,搜索结果将打印一个包含五列的表格:NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED。官方映像是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

取决于您的Internet速度,下载可能需要几秒钟或几分钟。下载图像后,我们可以使用以下方法列出图像:

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子命令来启动,停止,移除和管理容器。

以下命令将基于CentoS映像启动Docker容器。如果您没有本地图像,它将首先下载它:

docker container run centos

乍一看,您似乎什么也没有发生。好吧,那是不对的。 CentOS容器在启动后立即停止,因为它没有长时间运行的过程,并且我们未提供任何命令,因此该容器在启动后运行了空命令,然后退出。

开关-it允许我们通过命令行与容器进行交互。要启动交互式容器,请输入:

docker container run -it centos /bin/bash

正如您从容器启动后的输出中所看到的,命令提示符已更改,这意味着您现在正在容器内部

[root@719ef9304412 /]#

要列出活动容器,请输入:

docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
79ab8e16d567        centos              "/bin/bash"         22 minutes ago      Up 22 minutes                           ecstatic_ardinghelli

如果您没有任何正在运行的容器,则输出将为空。

要查看活动容器和非活动容器,请将其传递给-a开关:

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,然后将其粘贴到container rm子命令之后:

docker container rm c55680af670c

结论

您已经了解了如何在CentOS 7计算机上安装Docker,以及如何下载Docker映像和管理Docker容器。您可能还需要阅读 Docker Compose ,它使您可以定义和运行多容器Docker应用程序。

本教程几乎没有涉及Docker生态系统的表面。在接下来的一些文章中,我们将继续深入探讨Docker的其他方面。要了解有关Docker的更多信息,请查看官方 Docker文档

如果您有任何疑问或意见,请在下面发表评论。

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持