1. 程式人生 > >docker的安裝與基本操作

docker的安裝與基本操作

我們以centOS7為例,講解一下docker的安裝與簡單操作

安裝與啟動

#安裝
yum -y install docker
#升級核心
yum -y updatedocker
/etc/init.d/docker start
#加入開機啟動,修改配置檔案/etc/sysconfig/docker
chkconfig docker on
#啟動docker服務
service docker start
#基本資訊檢視
docker version # 檢視docker的版本號,包括客戶端、服務端、依賴的Go等
docker info # 檢視系統(docker)層面資訊,包括管理的images, containers數等

映象獲取

# 搜尋映象
docker search <image>
# 下載映象(從registry中獲取),當映象倉庫連結不成功時,可以指定獲取映象的路徑.
docker pull <image>  或 docker pull daocloud.io/library/centos:latest
# 檢視映象 
    docker images: # 列出images
    docker images -a # 列出所有的images(包含歷史)
    docker rmi  <image ID>: # 刪除一個或多個image

容器操作

# 使用映象建立容器
docker run -it --name volume-test1 -h nginx(主機名) docker run -i -t volume-test1 /bin/bash # 建立一個容器,讓其中執行 bash 應用,退出後容器關閉 #建立一個名稱centos_aways的容器,自動重啟 # --restart引數:always始終重啟;on-failure退出狀態非0時重啟;預設為,no不重啟 # 檢視容器 docker ps :列出當前所有正在執行的container docker ps -l :列出最近一次啟動的container docker ps -a :列出所有的container
(包含歷史,即執行過的container) docker ps -q :列出最近一次執行的container ID # 再次啟動容器 docker start/stop/restart <container> #:開啟/停止/重啟container #進入正在執行的docker容器 docker exec -it [container_id] /bin/bash docker run -i -t -p <host_port:contain_port> #:對映 HOST 埠到容器,方便外部訪問容器內服務,host_port 可以省略,省略表示把 container_port 對映到一個動態埠。 # 刪除容器 docker rm <container...> #:刪除一個或多個container docker rm `docker ps -a -q` #:刪除所有的container docker ps -a -q | xargs docker rm #:同上, 刪除所有的container #容器資源限制 -m 1024m --memory-swap=1024m # 限制記憶體最大使用(bug:超過後程序被殺死) --cpuset-cpus="0,1" # 限制容器使用CPU -p 92:80 #埠對映 #容器隨系統自啟動 docker run --restart=always nginx

*no – 預設值,如果容器掛掉不自動重啟
on-failure – 當容器以非 0 碼退出時重啟容器
同時可接受一個可選的最大重啟次數引數 (e.g. on-failure:5).
always – 不管退出碼是多少都要重啟*

docker run -itd --name test01 -p IP:sport:dport  -m 1024m --memory-swap=1024m --cpuset-cpus="0,1" --restart=always <image ID> 
docker exec -it test01 bash  # 進入容器也可以用exec命令

持久化容器與映象

#通過容器生成新的映象
docker commit <container> [repo:tag] # 將一個container固化為一個新的image,後面的repo:tag可選。

#持久化容器
 docker export <CONTAINER ID> > /tmp/export.tar
#持久化映象

 docker save 映象ID > /tmp/save.tar

#匯入持久化容器
cat /tmp/export.tar | docker import - export:latest

#匯入持久化映象
docker load < /tmp/save.tar

#對image打tag
docker tag daa11948e23d load:tag

export-import與save-load的區別

匯出後再匯入(export-import)的映象會丟失所有的歷史,而儲存後再載入(save-load)的映象沒有丟失歷史和層(layer)。這意味著使用匯出後再匯入的方式,你將無法回滾到之前的層(layer),同時,使用儲存後再載入的方式持久化整個映象,就可以做到層回滾。(可以執行docker tag 來回滾之前的層)。

其他命令

docker logs $CONTAINER_ID #檢視docker例項執行日誌,確保正常執行
    docker inspect $CONTAINER_ID #docker inspect <image|container> 檢視imagecontainer的底層資訊
    docker build <path> 尋找path路徑下名為的Dockerfile的配置檔案,使用此配置生成新的image
    docker build -t repo[:tag] 同上,可以指定repo和可選的tag
    docker build - < <dockerfile> 使用指定的dockerfile配置檔案,docker以stdin方式獲取內容,使用此配置生成新的image
    docker port <container> <container port> 檢視本地哪個埠對映到container的指定埠,其實用docker ps 也可以看到

總結

docker在不同作業系統下安裝存在一些差異,總的來說對差別不大,為了學習大家可以在ubuntu下安裝docker,映象採用centOS的。