docker的安裝與基本操作
阿新 • • 發佈:2019-01-28
我們以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> 檢視image或container的底層資訊
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的。