在CentOS 8上安装和使用Docker CE

欢迎来到我们的指南,了解如何在CentOS 8上安装和使用docker ce。 码头工人 是一个平台,使开发人员和系统管理员可以 建立,运行和共享 带容器的应用程序。

退出两个可用的docker版本。 Docker CEDocker EE

  • Docker CE(社区版)是受社区支持的开源开源Docker版本,可免费获得。
  • Docker EE(企业版)是Docker CE的商业/高级版本,受Docker Inc.支持。

在CentOS 8上安装和使用Docker CE

您可以通过多种方法在CentOS 8上安装Docker CE。

  • 从Docker存储库在CentOS 8上安装Docker CE
  • 使用RPM二进制软件包在CentOS 8上手动安装Docker CE
  • 使用Docker安装脚本安装Docker CE(超出本教程的范围)。

从Docker存储库在CentOS 8上安装Docker CE

运行系统更新

确保您的系统程序包缓存是最新的。

dnf update

卸载Docker版本

如果您的系统上安装了任何旧的docker版本,请确保在继续操作之前删除它们及其依赖项。

dnf remove docker*

在CentOS 8上安装Docker CE存储库

为了确保将来无缝无缝升级Docker软件包,您可以从其官方仓库中安装它。为此,您需要通过执行以下命令在CentOS 8上设置Docker存储库。

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

上面的命令在CentOS 8上安装并启用Docker CE repo。

在CentOS 8上安装Docker Engine(Docker CE)

存放库到位后,继续安装docker-ce和其他工具,包括 containerd.io,这是CentOS 8上开放,可靠的容器运行时。

上面安装的Docker CE仓库提供的最新docker-ce软件包需要 containerd.io >= 1.2.2-3 (在撰写本文时),这在Docker CE仓库中不可用。

因此,请安装 containerd.io 在继续安装Docker CE本身之前,请先手动进行。

dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.2.el7.x86_64.rpm

接下来,安装Docker CE和Docker CE CLI实用程序。

dnf install docker-ce docker-ce-cli

从RPM软件包安装Docker CE

您也可以使用RPM软件包在CentOS 8上安装Docker ce。

从以下位置下载上面安装的各个软件包的最新版本。 Docker软件包页面

for i in containerd.io-1.2.13-3.2.el7.x86_64.rpm docker-ce-19.03.12-3.el7.x86_64.rpm docker-ce-cli-19.03.12-3.el7.x86_64.rpm; do dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/$i; done

相应地替换软件包的版本号。

启动Docker服务

启动并启用Docker和Containerd服务以在系统启动时运行;

systemctl enable --now docker containerd

以非root用户身份运行Docker

如果您以标准用户身份运行Docker,可能会收到这样的错误;

[[email protected] ~]$ docker ps -a
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: ...
/var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

因此,如果您需要以非root用户身份运行docker,只需将要运行docker的用户添加到docker group或简单地授予该用户sudo权限即可。例如要添加一个用户, koromicha, 至 docker 组;

usermod -aG docker koromicha
groups koromicha
koromicha : koromicha docker

然后,您可以以非超级用户身份运行docker。

验证Docker CE安装

检查docker版本;

docker --version
Docker version 19.03.12, build 48a66213fe

要验证Docker CE是否运行良好,您可以尝试运行 hello-world 容器图片。

[[email protected] ~]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76
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/

列出正在运行的容器;

[[email protected] ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
4083300e3660        hello-world         "/hello"            3 minutes ago       Exited (0) 5 minutes ago                       laughing_visvesvaraya

在CentOS 8上运行Docker映像

在上面验证docker安装时,我们运行了hello-world docker容器映像。设置Docker环境后,下一步就是构建和运行Docker容器化应用程序。

因此,这里有两件事:您可以构建和运行自己的docker容器映像,也可以从中提取已创建和共享的映像 码头工人枢纽,这是Docker映像的映像存储库。

在此演示中,我们将学习如何使用来自Docker Hub的已创建的Docker映像。使用docker命令,您可以轻松地从docker hub中提取docker映像,就像我们对 你好,世界 上图。

如果要构建自己的映像并在docker hub上共享,则需要注册以创建自己的名称空间来存储映像,然后该名称空间可以公开使用。

使用 docker 命令

docker command具有许多用于运行各种任务的命令行选项。

命令行语法为;

docker [OPTIONS] COMMAND

您可以通过执行查看各种命令选项和命令。

docker --help
...
Options:
      --config string      Location of client config files (default "/home/koromicha/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
...
Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
...
Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
...

查看特定docker命令的帮助;

docker COMMAND --help

例如,查找docker的用法 run 命令;

docker run --help

从Docker Hub运行Docker映像

在Docker Hub上搜索Docker映像

您可以使用以下命令在Docker Hub上搜索特定的公开可用Docker映像 docker search 命令。 docker search命令的语法为;

docker search [OPTIONS] TERM

docker search --help 查看更多选项。

例如,搜索所有包含术语hello-world的图像;

docker search hello-world
NAME                                       DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
hello-world                                Hello World! (an example of minimal Dockeriz…   1226                [OK]                
kitematic/hello-world-nginx                A light-weight nginx container that demonstr…   147                                     
tutum/hello-world                          Image to test docker deployments. Has Apache…   72                                      [OK]
dockercloud/hello-world                    Hello World!                                    19                                      [OK]
...

一些列标题不言自明。其他列包括:

星星 :显示喜欢的图像数量。官方 :指定图像是否从可信来源生成。自动化的 :显示映像是否已从外部存储库中的源代码自动构建并自动推送到Docker存储库。

通常,无前缀的映像被认为是正式的docker hub映像,稳定且正在维护。它还包含 [OK]官方 柱。

将Docker映像拉至本地注册表

识别完需要运行的映像后,您可以使用将其拉出并将其存储在本地注册表中 docker pull 命令或简单地使用运行它 docker run 命令。

例如,搜索并拉出 Ubuntu系统docker映像;

docker search ubuntu
NAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   11046               [OK]                
dorowu/ubuntu-desktop-lxde-vnc                            Docker image to provide HTML5 VNC interface …   441                                     [OK]
rastasheep/ubuntu-sshd
...

让我们获取官方的Ubuntu映像。

docker pull ubuntu

默认情况下,这将拉出当前可用的Ubuntu的最新版本,通常是最新的LTS版本。

Using default tag: latest
latest: Pulling from library/ubuntu
a4a2a29f9ba4: Pull complete 
127c9761dcba: Pull complete 
d13bf203e905: Pull complete 
4039240d2e0b: Pull complete 
Digest: sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

您可以为特定类型的Ubuntu指定其他标签。

docker search ubuntu:20.04

列出可用的Docker映像

您可以使用列出本地可用的图像 docker images 命令。

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              74435f89ab78        11 days ago         73.9MB
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB

运行Docker容器映像

从Docker集线器中拉出一个容器并在本地可用后,您可以使用 docker run 要么 docker create 命令。

docker run,您可以创建一个容器,启动它,然后使用外壳程序在其中运行任何命令来访问它。 docker run命令行语法为;

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

例如,要运行我们的Ubuntu映像,我们以交互方式从上面的Docker集线器中提取了图片(选项-i)放到外壳(选项-t,以分配伪TTY);

docker run -it ubuntu

这掉到了外壳上。

[email protected]:/#

您现在位于具有容器ID的Ubuntu容器中, 43ff7a031a0b,以root用户身份。您在此shell下运行或执行的所有操作都在容器本身的文件系统内发生。

您可以直接执行命令,而无需进入容器外壳;

docker run ubuntu cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

如果以交互方式运行容器并启动了外壳程序,则可以在其中运行命令。

退出外壳时,连接到容器的外壳将分离,并且容器停止。如果在运行docker容器时使用了-i和-t选项,则可以在不停止容器的情况下退出外壳,请使用击键 Ctrl + p 然后 Ctrl + q

您还可以在后台运行容器并打印容器ID

docker run -dit --name ubuntudemo ubuntu

将其连接到控制台;

docker attach ubuntudemo

列出Docker容器

您可以使用以下方式列出活动(当前正在运行)的容器 docker ps 命令。

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
1c280cf21322        ubuntu              "/bin/bash"         2 minutes ago       Up 2 minutes                            ubuntudemo

要列出所有容器,正在运行的容器和已退出的容器;

docker ps -a
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS                        PORTS               NAMES
1c280cf21322        ubuntu              "/bin/bash"             3 minutes ago       Up 3 minutes                                      ubuntudemo
b5453d11a544        ubuntu              "/bin/bash"             10 minutes ago      Exited (0) 8 minutes ago                          stupefied_hawking
a65d1797c504        ubuntu              "/bin/bash"             14 minutes ago      Exited (0) 12 minutes ago                         zen_ramanujan
c4d68a2b1b39        ubuntu              "/bin/bash"             23 minutes ago      Exited (137) 20 minutes ago                       sweet_dirac
9b7867c1daad        ubuntu              "cat /etc/os-release"   40 minutes ago      Exited (0) 40 minutes ago                         great_allen

启动和停止Docker容器

您可以使用以下命令启动已退出/已停止的容器 docker start 命令。例如,要启动名为的容器, stupefied_hawking,ID为 545,运行命令;

docker start stupefied_hawking

要么

docker start b5453d11a544

同样,您可以使用其名称或容器ID来停止正在运行的泊坞窗 docker stop 命令。

docker stop ubuntudemo

移除Docker容器

完成容器处理后,您可以使用 docker rm 命令。

删除ID为的停止的容器 9b7867c1daad例如,在我们的 docker ps -a 以上输出;

docker rm 9b7867c1daad

您不能删除正在运行的容器,除非您使用强制删除 -f 要么 --force docker rm命令的选项。

docker rm 1c280cf21322 -f

删除Docker映像

Docker映像也可以使用以下方式删除 docker rmi 命令。例如,您可以列出图像并获取要删除的特定图像的图像ID。

docker images -a

您可以使用以下方式显示数字IDS: -q 选项。

docker images -a -q
74435f89ab78
bf756fb1ae65

删除图片;

docker rmi 74435f89ab78

或使用名称仓库名称;

docker rmi ubuntu

使用选项 -f 要么 --force 强制删除。

到此,我们的指南结束了有关如何在CentOS 8上安装和使用Docker CE的指南。

进一步阅读

Docker文档

Sidebar