1. 程式人生 > >CentOS7下如何正確安裝並啟動Docker(圖文詳解)

CentOS7下如何正確安裝並啟動Docker(圖文詳解)

main transacti linux. 機制 cee HA 管理 docke project

  我使用了CentOS 7操作系統,可以非常容易地安裝Docker環境。假設,下面我們都是用root用戶進行操作,執行如下命令進行準備工作:

技術分享圖片
yum install -y yum-utils
yum-config-manager     --add-repo 
https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo

yum makecache fast
技術分享圖片

  上面首先安裝了yum-utils,它提供了yum-config-manager管理工具,然後安裝了最新穩定版本的Repository文件,最後更新yum的package索引。

  執行如下命令:

sudo yum -y install docker-engine

  首次安裝docker-engine,輸出類似如下日誌信息:

技術分享圖片
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
Resolving Dependencies
--> Running transaction check
---> Package docker-engine.x86_64 0:1.13.1-1.el7.centos will be installed
--> Processing Dependency: docker-engine-selinux >= 1.13.1-1.el7.centos for package: docker-engine-1.13.1-1.el7.centos.x86_64
--> Running transaction check
---> Package docker-engine-selinux.noarch 0:1.13.1-1.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================================
 Package                                                  Arch                                      Version                                                 Repository                                      Size
=================================================================================================================================================================================================================
Installing:
 docker-engine                                            x86_64                                    1.13.1-1.el7.centos                                     docker-main                                     19 M
Installing for dependencies:
 docker-engine-selinux                                    noarch                                    1.13.1-1.el7.centos                                     docker-main                                     28 k

Transaction Summary
=================================================================================================================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 19 M
Installed size: 65 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/docker-main/packages/docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY             ] 1.2 MB/s | 944 kB  00:00:14 ETA
Public key for docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm is not installed
(1/2): docker-engine-selinux-1.13.1-1.el7.centos.noarch.rpm                                                                                                                               |  28 kB  00:00:01     
(2/2): docker-engine-1.13.1-1.el7.centos.x86_64.rpm                                                                                                                                       |  19 MB  00:00:04     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                            4.5 MB/s |  19 MB  00:00:04     
Retrieving key from https://yum.dockerproject.org/gpg
Importing GPG key 0x2C52609D:
 Userid     : "Docker Release Tool (releasedocker) <[email protected]>"
 Fingerprint: 5811 8e89 f3a9 1289 7c07 0adb f762 2157 2c52 609d
 From       : https://yum.dockerproject.org/gpg
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : docker-engine-selinux-1.13.1-1.el7.centos.noarch                                                                                                                                              1/2
libsemanage.semanage_direct_install_info: Overriding docker module at lower priority 100 with module at priority 400.
restorecon:  lstat(/var/lib/docker) failed:  No such file or directory
warning: %post(docker-engine-selinux-1.13.1-1.el7.centos.noarch) scriptlet failed, exit status 255
Non-fatal POSTIN scriptlet failure in rpm package docker-engine-selinux-1.13.1-1.el7.centos.noarch
  Installing : docker-engine-1.13.1-1.el7.centos.x86_64                                                                                                                                                      2/2
  Verifying  : docker-engine-selinux-1.13.1-1.el7.centos.noarch                                                                                                                                              1/2
  Verifying  : docker-engine-1.13.1-1.el7.centos.x86_64                                                                                                                                                      2/2

Installed:
  docker-engine.x86_64 0:1.13.1-1.el7.centos                                                                                                                                                                     

Dependency Installed:
  docker-engine-selinux.noarch 0:1.13.1-1.el7.centos                                                                                                                                                             

Complete!
技術分享圖片

  可見,Docker已經成功安裝。

  下面,我們就可以啟動Docker了,執行如下命令,啟動Docker(Docker Engine):

systemctl start docker

  可以查看一下當前系統上的進程,執行ps -ef | grep docker確認Docker已經啟動:

root       2717      1  8 21:52 ?        00:00:00 /usr/bin/dockerd
root       2723   2717  1 21:52 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root       2920   2645  0 21:52 pts/0    00:00:00 grep --color=auto docker

  下面,我們驗證一下,Docker啟動了,應該就可以在一個Container中運行一個準備好的應用,執行如下命令:

docker run hello-world

  基於一個名稱為hello-world的Image,啟動Container並運行它,啟動過程如下所示:

技術分享圖片
Unable to find image ‘hello-world:latest‘ locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
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.
 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://cloud.docker.com/

For more examples and ideas, visit:

https://docs.docker.com/engine/userguide

 
技術分享圖片

  首先可以看到,因為本地沒有下載過該Image,所以會先從Docker Hub上下載,對應的tag是latest。另外,也可以看到提示信息“Hello from Docker! ”,表示我們的環境配置沒問題,可以啟動Container運行應用程序。這裏,還給出了運行我們這個名稱為hello-world的示例Image在Container中運行過程中。

Docker的基本運行機制如下所示:

  1. Docker Client連接到Docker daemon
  2. Docker daemon從Docker Hub上下載名稱為hello-world的Image
  3. Docker daemon基於這個Image創建了一個新的Container,並運行應用程序,輸出“Hello from Docker!”
  4. Docker daemon將結果輸出到Docker Client,也就是我們的終端上

現在,我們可能想知道hello-world這個Image是如何構建,才能夠最終在我們的Docker Container中運行,請看下文。

CentOS7下如何正確安裝並啟動Docker(圖文詳解)