安裝 Docker
本節我們將在centos7.4中安裝 Docker。
Docker 支持幾乎所有的 Linux 發行版,也支持 Mac 和 Windows。各操作系統的安裝方法可以訪問:https://docs.docker.com/engine/installation/
Docker 分爲開源免費的 CE(Community Edition)版本和收費的 EE(Enterprise Edition)版本。下面我們將按照文檔,通過以下步驟安裝 Docker CE 版本。
配置docker ce版本的repo源
[root@localhost yum.repos.d]# cat docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://download.docker.com/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://download.docker.com/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
使用yum源安裝docker
[root@localhost ~]# yum install epel-release -y
[root@localhost ~]# ll /etc/yum.repos.d/epel*
-rw-r--r-- 1 root root 1050 Sep 17 2019 /etc/yum.repos.d/epel.repo
-rw-r--r-- 1 root root 1149 Sep 17 2019 /etc/yum.repos.d/epel-testing.repo
yum安裝軟件包,我這裏安裝CE版本不安裝1.13版本
[root@localhost ~]# yum install docker* -y 1.13版本
[root@localhost ~]# yum install docker-ce* -y CE版本社區版本
檢擦docker軟件包是否部署成功
[root@localhost ~]# rpm -qa | grep docker
[root@localhost ~]# yum list -C docker
啓動docker引擎服務,並且查看版本
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker version
Server: Docker Engine - Community
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:45:28 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
可以看到和mysql一樣C/S架構,有客戶端和服務端。通過下面socket文件來進行本地通信
[root@localhost ~]# ps -ef | grep docker
root 23788 1 0 05:25 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
[root@localhost ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13433 [OK]
將鏡像拉取到本地
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
8559a31e96f4: Downloading 1.948MB/27.1MB
8d69e59170f7: Download complete
3f9f1ec1d262: Download complete
d1f5ff4f210d: Download complete
1e22bfa8652e: Download complete
或者將nginx.tar鏡像包導入到你的鏡像列表裏面,因爲拉取鏡像很慢,我將tar包上傳了
如果nginx鏡像是通過windows上傳nginx.tar,導入的nginx鏡像命令:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@localhost ~]# ls
anaconda-ks.cfg nginx.tar
[root@localhost ~]# docker load <nginx.tar
1c95c77433e8: Loading layer 72.47MB/72.47MB
002a63507c1c: Loading layer 57.31MB/57.31MB
12fdf55172df: Loading layer 3.584kB/3.584kB
Loaded image: nginx:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5a3221f0137b 10 months ago 126MB
[root@localhost ~]# docker run -itd -p 80:80 nginx
314d1d01c94136a35dcb07016814437666331d8f7b441f5d0a1f66863848c413
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
314d1d01c941 nginx "nginx -g 'daemon of?? 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp happy_mirzakhani
或者這種方式導入鏡像也可以,但是不建議,創建容器報錯
[root@localhost ~]# cat nginx.tar | docker import - nginx:v1
sha256:0dd1a59f537a0760b91897283e7e568bbc29b3971337c31a630042a1a049fd7c
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1 0dd1a59f537a 2 seconds ago 130MB
nginx latest b2ebe65d87c7 2 minutes ago 130MB
[root@localhost ~]# docker run -itd -p 81:80 nginx:v1
docker: Error response from daemon: No command specified.
Run,全新創建一臺容器;
-i,interactive交互模式;
-t,tty打開登陸終端;
-d,detach後臺運行、啓動;
-p,publish發佈端口,將宿主機80(第一個)DNAT映射至容器的80;第一個80端口是宿主機的端口,這個端口是宿主機上面需要開啓的,如果宿主機上80端口被佔用了是不行的,通過DNAT映射