Docker系列(3-應用篇) linux 安裝 Docker
一、軟件版本
作業系統:Centos 7.0
docker的官網 : https://www.docker.com/community-edition#/download
高速下載地址:http://get.daocloud.io/
二、開始安裝:
http://www.daocloud.io/
由於國內的源比較卡,所以我們推薦使用daocloud的方式,註冊安裝即可:
[[email protected] ~]# curl -sSL https://get.daocloud.io/docker | sh
#為了快速拉取映象,還要接入daocloud.因為在國內通常拉取Docker hub的映象都是被牆的。
[[email protected] ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://681a96df.m.daocloud.io
響應:
docker version >= 1.12
{"registry-mirrors": ["http://681a96df.m.daocloud.io"],
"live-restore": true
}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
##實際上是相關配置寫入了,
[[email protected] ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://681a96df.m.daocloud.io"],
"live-restore": true
}
##指定去這個倉庫下,因為預設是去官方的Docker hub下載映象的。
然後重啟docker:
[[email protected] ~]# systemctl restart docker
修改配置檔案
[[email protected] ~]# vim /lib/systemd/system/docker.service
#原:ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
改為:ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 ##tcp
修改後要重載入docker
[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker
2、我們也可以看一下到底docker 讀取的是哪個配置檔案,不同版本可能不一樣:
[[email protected] ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2017-03-11 16:43:51 CST; 1min 11s ago
Docs: https://docs.docker.com
###這裡我們知道centos讀取的是/usr/lib/systemd/system/docker.service這個檔案。啟動的相關引數,後面再慢慢開始
Tcp:
Vim /usr/lib/systemd/system/docker.service
[[email protected] ~]# docker -H 192.168.63.200:2375 images
如果跨機訪問不到,需要關閉防火牆
徹底關閉防火牆:
[[email protected] ~]# sudo systemctl status firewalld.service
[[email protected] ~]# sudo systemctl stop firewalld.service
[[email protected] ~]# sudo systemctl disable firewalld.service
三、執行docker版的hello world
要執行docker版本的hello world,那麼自然需要先獲取映象,注意到docker官方給我們提供了一個映象中心:https://hub.docker.com/,一般公司內部也會給我們提供一個公司專用的映象中心。
docker pull : 從映象倉庫中拉取或者更新指定映象,映象除了名稱之外,還有一個tag的概念,如果不提供tag,就是表示latest。
docker images : 列出本地映象。
不可不知的docker網路
在實際開發中,要知道我們的服務,一般是在某個埠進行監聽,一直在後臺執行的,那麼就涉及到宿主機/宿主機中的容器它們之間的網路問題了。
docker的網路型別分3種:bridge,host,none。(這裡和vmware的網路設定部分非常相似)
bridge,就是橋接模式,docker容器會有自己獨立的network namespace,也就是會有虛擬的ip和port,那麼如何通過宿主機來訪問容器內部的埠呢?這裡就涉及到一個技術:埠對映了。
host,不會分配獨立的network namespace,而是和宿主機進行共用網路。
none,不使用網路,docker容器不會和外界進行通訊。