Docker安裝及基本命令

管宜堯發表於2015-05-31

安裝/啟動Docker

在CentOS 7上安裝

Docker預設已經包含在CentOS-Extra倉庫中,使用以下命令安裝

sudo yum install docker

在CentOS 6.5上安裝

對於CentOS 6.5,Docker是 EPEL 倉庫的一部分,因此需要確保已經加入EPEL的YUM源。在CentOS 6上,Docker的包名可能與桌面的docker應用衝突,因此,它的包名改為了docker-io

sudo yum -y remove docker
sudo yum install docker-io

啟動Docker

安裝Docker之後,需要啟動Docker守護程式

sudo service docker start

為了讓docker能夠開機執行,需要使用chkconfig: sudo chkconfig docker on

獲取Docker映象,啟動Docker容器

sudo docker pull centos
sudo docker images centos
sudo docker run -i -t centos /bin/bash

基本命令

下列命令建立一個容器簡單的輸出Hello world:

$ docker run ubuntu:14.04 /bin/echo 'Hello, world'
Hello, world

這裡docker run命令指定了使用的映象為ubuntu:14.04,我們的容器就是從該映象執行。當指定一個映象的時候,Docker首先會在你的宿主機上查詢是否存在該映象,如果不存在的話會從Docker Hub下載。

接下來指定了要在容器中執行的命令是/bin/echo 'Hello, world',當容器啟動之後,Docker會建立一個新的ubuntu 14.04的環境,然後在裡面執行這個命令。當命令執行完畢之後,Docker建立的這個容器的生命週期就結束了。

下面我們建立一個互動式的容器:

$ docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#

這次同樣啟動了ubuntu 14.04的映象,但是這裡指定了兩個額外的引數-t-i。引數-t為剛才建立的容器分配一個偽終端(pseudo-tty),-i則允許我們通過獲取容器的標準輸入建立一個互動式的連線。

要退出該容器,在終端輸入exit或者ctrl+D即可,這樣該容器就可以停止了

root@2e3e7e77adbd:/# exit
exit

幾個常用的docker命令:

  • docker ps 列出Container
  • docker logs 顯示容器的標準輸出
  • docker stop 停止執行中的容器
  • docker version 顯示當前docker客戶端和守護程式的版本資訊

docker命令的子命令很多,

attach    附加到一個執行中的容器上去
build     從Dockerfile構建映象
commit    從容器當前的修改建立一個新的映象
cp        從容器的檔案系統複製檔案/資料夾到主機路徑
create    建立一個新的容器
diff      檢查容器檔案系統發生的修改
events    從伺服器獲取實時的事件
exec      在已存在的容器中執行命令
export    將容器中的內容以流的方式匯出為tar歸檔
history   顯示映象的歷史
images    列出所有映象
import    從tar包中的內容建立一個新的檔案系統映象
info      顯示系統的資訊
inspect   返回容器低階的資訊
kill      殺掉一個執行中的容器
load      從tar歸檔載入映象
login     註冊或者登入到Docker註冊伺服器
logout    從Docker註冊伺服器登出
logs      檢索容器中的日誌
port      查詢基於NAT到PRIVATE_PORT的公開埠
pause     暫停容器中所有的程式
ps        列出容器
pull      從Docker註冊伺服器拉取一個映象或者倉庫
push      推送一個映象或者倉庫到Docker註冊伺服器
restart   重啟一個執行中的容器
rm        刪除一個/多個容器
rmi       刪除一個/多個映象
run       在新的容器中執行命令
save      儲存映象到tar歸檔
search    從Docker Hub搜尋一個映象
start     啟動一個已經停止的容器
stop      停止執行中的容器
tag       為倉庫中的映象新增標籤
top       查詢容器中執行的程式
unpause   取消容器的暫停狀態
version   顯示Docker的版本資訊
wait      堵塞住直到容器停止,然後列印它的退出碼

使用Dockerfile構建映象:

docker build -t <your username>/<image name> .

執行映象:

docker run -p <本地埠>:<容器埠> -d <映象名稱>
curl -i <本地IP>:<本地埠>

檢視容器的日誌(類似於tail -f命令)

docker logs -f <容器名稱>

例子:使用官方Nginx Docker映象

使用之前,需要先獲取官方nginx映象

docker pull nginx

執行命令如下

docker run --name nginx_server -d -p 8080:80 -v /Users/mylxsw/codes/php:/usr/share/nginx/html:ro nginx

下面對提供的引數進行一一解釋:

  • --name指定了我們建立的容器名稱為nginx_server
  • -d指定了容器在後臺執行
  • -p則指定了將容器的80埠對映到宿主機的8080
  • -v引數指定了將本地的/Users/mylxsw/codes/php目錄對映到容器的/usr/share/nginx/html目錄,並且訪問許可權為只讀

啟動該容器之後,就可以通過http://localhost:8080訪問了。

更復雜一點,可以通過使用-v引數指定nginx配置檔案-v /some/nginx.conf:/etc/nginx/nginx.conf:ro

在指定新的nginx配置檔案時,注意一定要設定nginx的daemon off;配置項,如果以後臺模式執行的話,容器就沒法跟蹤nginx的程式,容器啟動後就會立即結束。

如果僅僅是測試的話,可以使用--rm選項,這樣,在容器結束執行之後就可以自動刪除,當然使用--rm選項的時候不能和-d選項同時使用。

docker run --rm --name nginx_server -d -p 8080:80 -v /Users/mylxsw/codes/php:/usr/share/nginx/html:ro nginx

參考:

Dockerizing Applications: A "Hello world"

相關文章