在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