docker 是一種輕量級的虛擬機器,優點是輕量,啟動服務極快,比起其他虛擬機器
除了所執行的應用程式以外幾乎不消耗其他的系統資源,打包容易,所以更容易佈署或移轉
首先是安裝docker
===============================================
Centos 6
先用EPEL套件安裝
wget http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install docker-io
===============================================
Centos 7
yum install docker-io
service docker start
chkconfig docker on
這樣開機後docker就會自動啟動了
=============下載image=======================
要找相關的images檔一種是到官方找https://hub.docker.com
一種是直接搜尋docker search ubuntu
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATEDdocker.io
docker.io/ubuntu Ubuntu is a Debian-based Linux operating s... 6321 [OK]
這表示有一個docker.io/ubuntu的images,至於他的版本呢可能只能到https://hub.docker.com上面看了,如果有找到指令我會再補上
接著我們要把images拉下來
docker pull docker.io/ubuntu:14.04
14.04表示你要拉的版本,如果不加就是latest,就是最後的版本
PS.注意最後的版本不代表最穩定的版本
=============執行image讓他變成容器================
先介紹幾個指令
docker images #查詢本地有什麼images
docker ps #查詢本機已經執行了那些容器
#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nguoianphu/docker-dns 9.10.5 4397a4f50afc 44 minutes ago 1.017 GB
sameersbn/bind v2 1de82241fca3 5 hours ago 438.7 MB
表示有兩個images,我要將images run起來變成容器
docker run -d -p 53:53/udp docker.io/nguoianphu/docker-dns
參數-d 表示背景執行,53:53/udp表示到本機的udp 53轉到這個容器的udp 53 port上
如果成功執行起來可以用docker ps檢查
#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13be5fa06309 docker.io/nguoianphu/docker-dns:9.10.5 "/docker-entrypoint.s" 46 minutes ago Up 46 minutes 53/tcp, 0.0.0.0:53->53/udp grave_kowalevski
記住13be5fa06309這個就是這個容器的ID,當你要停止、儲存現在狀態,都需要這個ID
=============進入容器=========================
docker exec -it 13be5fa06309 bash
其實exec是執行這個容器的命令,因為我要進入這個容器
所以用bash這樣就可以看到一個很小型的安裝好bind的linux主機
你可以vi編輯設定檔,可以用rndc reload重新讀取設定
但是千萬不要關閉服務,一但關閉服務整個docker就會停掉了~_~
另外進入容器後如果出現亂碼,可以在可以設定編碼(ex utf-8
docker exec -it 13be5fa06309 env LANG=C.UTF-8 bash
=============儲存image=========================
當我變更了設定檔,或是編輯了網頁內容之後,請記得關閉docker前要先儲存(不是save,是commit)
docker commit -m '註解/版本x之類的' -a '上傳者' 13be5fa06309 docker.io/nguoianphu/docker-dns
這樣docker images就會多出一個不一樣版本的images
=============匯出=========================
docker save -o bind_9.10.5.tar docker.io/nguoianphu/docker-dns:9.10.5
匯出的檔案,然後images名字:版本
這樣就會匯出成一個tar檔,可以拿到其他有docker的電腦上進行佈署
=============佈署image=========================
docker load --input bind_9.10.5.tar
=============其他==========================
假如你的容器網路不想要經過host層,在run的時候可以使用--net=host這個參數
但是根據我看到的資料,由於這個容器直接使用實體的網路,因此如果這個docker被入侵
是有機會直接反過來入侵你的host OS的
刪除容器
docker rm 容器id
刪除image
docker rmi image
還有一些容器run起來之後再docker ps是看不到的(WHY????)
例如docker run -t -i centos:centos6 bash
你可以進入centos6的bash,但是一但離開這個容器就結束了
因為你已經結束bash,像這種情況就需要讓他執行一個不會停的程式
docker run -d centos ping localhost
或是docker run -d --privileged=true centos /usr/sbin/init
使用特權模式執行
或是docker run -d -restart=always centos
再進入這個容器
docker exec -it id bash
除了所執行的應用程式以外幾乎不消耗其他的系統資源,打包容易,所以更容易佈署或移轉
首先是安裝docker
===============================================
Centos 6
先用EPEL套件安裝
wget http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install docker-io
===============================================
Centos 7
yum install docker-io
service docker start
chkconfig docker on
這樣開機後docker就會自動啟動了
=============下載image=======================
要找相關的images檔一種是到官方找https://hub.docker.com
一種是直接搜尋docker search ubuntu
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATEDdocker.io
docker.io/ubuntu Ubuntu is a Debian-based Linux operating s... 6321 [OK]
這表示有一個docker.io/ubuntu的images,至於他的版本呢可能只能到https://hub.docker.com上面看了,如果有找到指令我會再補上
接著我們要把images拉下來
docker pull docker.io/ubuntu:14.04
14.04表示你要拉的版本,如果不加就是latest,就是最後的版本
PS.注意最後的版本不代表最穩定的版本
=============執行image讓他變成容器================
先介紹幾個指令
docker images #查詢本地有什麼images
docker ps #查詢本機已經執行了那些容器
#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nguoianphu/docker-dns 9.10.5 4397a4f50afc 44 minutes ago 1.017 GB
sameersbn/bind v2 1de82241fca3 5 hours ago 438.7 MB
表示有兩個images,我要將images run起來變成容器
docker run -d -p 53:53/udp docker.io/nguoianphu/docker-dns
參數-d 表示背景執行,53:53/udp表示到本機的udp 53轉到這個容器的udp 53 port上
如果成功執行起來可以用docker ps檢查
#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13be5fa06309 docker.io/nguoianphu/docker-dns:9.10.5 "/docker-entrypoint.s" 46 minutes ago Up 46 minutes 53/tcp, 0.0.0.0:53->53/udp grave_kowalevski
記住13be5fa06309這個就是這個容器的ID,當你要停止、儲存現在狀態,都需要這個ID
=============進入容器=========================
docker exec -it 13be5fa06309 bash
其實exec是執行這個容器的命令,因為我要進入這個容器
所以用bash這樣就可以看到一個很小型的安裝好bind的linux主機
你可以vi編輯設定檔,可以用rndc reload重新讀取設定
但是千萬不要關閉服務,一但關閉服務整個docker就會停掉了~_~
另外進入容器後如果出現亂碼,可以在可以設定編碼(ex utf-8
docker exec -it 13be5fa06309 env LANG=C.UTF-8 bash
=============儲存image=========================
當我變更了設定檔,或是編輯了網頁內容之後,請記得關閉docker前要先儲存(不是save,是commit)
docker commit -m '註解/版本x之類的' -a '上傳者' 13be5fa06309 docker.io/nguoianphu/docker-dns
這樣docker images就會多出一個不一樣版本的images
=============匯出=========================
docker save -o bind_9.10.5.tar docker.io/nguoianphu/docker-dns:9.10.5
匯出的檔案,然後images名字:版本
這樣就會匯出成一個tar檔,可以拿到其他有docker的電腦上進行佈署
=============佈署image=========================
docker load --input bind_9.10.5.tar
=============其他==========================
假如你的容器網路不想要經過host層,在run的時候可以使用--net=host這個參數
但是根據我看到的資料,由於這個容器直接使用實體的網路,因此如果這個docker被入侵
是有機會直接反過來入侵你的host OS的
刪除容器
docker rm 容器id
刪除image
docker rmi image
還有一些容器run起來之後再docker ps是看不到的(WHY????)
例如docker run -t -i centos:centos6 bash
你可以進入centos6的bash,但是一但離開這個容器就結束了
因為你已經結束bash,像這種情況就需要讓他執行一個不會停的程式
docker run -d centos ping localhost
或是docker run -d --privileged=true centos /usr/sbin/init
使用特權模式執行
或是docker run -d -restart=always centos
再進入這個容器
docker exec -it id bash