Docker必須安裝在CentOS7 64位機器上。
1 卸載老版本Docker
Docker老版本,docker-engine。Docker進入17.x版本后,名稱發(fā)生了變化,叫做docker-ce或者docker-ee。
sudo yum remove docker docker-common container-selinux docker-selinux docker-engine
執(zhí)行該命令只會卸載Docker本身,而不會刪除Docker內(nèi)容,例如鏡像、容器、卷以及網(wǎng)絡。這些文件保存在/var/lib/docker 目錄中,需要手動刪除。
2 安裝倉庫
(1) 安裝yum-utils ,這樣我們就能使用yum-config-manager 設置Yum源。
(2) 執(zhí)行以下命令,添加Yum源
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
(3) 【可選】執(zhí)行以下命令,啟用“edge”倉庫。edge倉庫其實也包含在了docker.repo文件中了,但默認是禁用的,我們可使用以下命令啟用edge倉庫。
sudo yum-config-manager --enable docker-ce-edge
如果想要再次禁用edge倉庫,可執(zhí)行以下命令。
sudo yum-config-manager --disable docker-ce-edge
Docker有兩種構建方式,Stable(穩(wěn)定)構建一般是一個季度發(fā)布一次;Edge(邊緣)構建一般是一個月發(fā)布一次。
3 安裝Docker
做好以上準備后,就可以正式安裝Docker了。
(1) 執(zhí)行以下命令更新Yum的包索引
sudo yum makecache fast
(2) 安裝你想要的Docker版本(CE/EE)
Docker CE
sudo yum install docker-ce
Docker EE
sudo yum install docker-ee
(3) 在生產(chǎn)環(huán)境中,我們可能需要指定想要安裝的版本??墒褂靡韵旅盍谐霎斍翱捎玫腄ocker版本。
yum list docker-ce.x86_64 --showduplicates |sort -r
(4) 啟動Docker
sudo systemctl start docker
(5) 驗證安裝是否正確
sudo docker run hello-world
這樣,Docker將會下載測試鏡像,并使用該鏡像啟動一個容器。
升級Docker
升級Docker非常簡單
(1) 執(zhí)行以下命令
sudo yum makecache fast
(2) 按照安裝的步驟,即可升級Docker。
Docker Compose
curl -L https://github.com/docker/compose/releases/download/$dockerComposeVersion/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
[wsun@localhost docker-1-simple]$ sudo /usr/local/bin/docker-compose up
Creating network "docker1simple_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-a4a4ebd5d945 -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
[wsun@localhost docker-1-simple]$ sudo /usr/local/bin/docker-compose up
Creating network "docker1simple_default" with the default driver
ERROR: Failed to program FILTER chain: iptables failed: iptables --wait -I FORWARD -o br-7abd83608f56 -j DOCKER: iptables v1.4.21: Couldn't load target `DOCKER':No such file or directory
Try `iptables -h' or 'iptables --help' for more information.
(exit status 2
sudo ip link delete docker0
sudo systemctl restart docker
進入容器:
[wsun@localhost ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb9c5812aedb kibana "/docker-entrypoin..." 2 days ago Up 41 minutes 0.0.0.0:5601->5601/tcp elk_kibana_1
68658b7a5749 elasticsearch "/docker-entrypoin..." 2 days ago Up 41 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elk_elasticsearch_1
75a23f03e621 logstash "/docker-entrypoin..." 2 days ago Up 41 minutes 0.0.0.0:5000->5000/tcp elk_logstash_1
[wsun@localhost ~]$ sudo docker inspect --format "{{.State.Pid}}" 75a23f03e621
4327
[wsun@localhost ~]$ sudo nsenter --target 4327 --mount --uts --ipc --net --pid
root@75a23f03e621:/#