若是要導出鏡像到本地文件,能夠使用 docker save 命令。php
docker save -o log_v140.tar docker.io/vmware/harbor-log:v1.4.0
docker save ID |gzip > 123.tgz(這個5+1)
執行完將docker.io/vmware/harbor-log:v1.4.0這個鏡像保存於log_v140.tar這個文件中html
若要將save指令保存的鏡像文件導入,能夠使用 docker load 從導出的本地文件中再導入到本地鏡像庫,例如python
$ sudo docker load --input docker.io/vmware/harbor-log:v1.4.0mysql
或sql
$ sudo docker load < docker.io/vmware/harbor-log:v1.4.0docker
這將導入鏡像以及其相關的元數據信息(包括標籤等)。thinkphp
1) 後臺運行鏡像並映射80端口到宿主機的80端口shell
docker run -d -p 80:80 medicean/vulapps:b_bash_shellshock1apache
2) 運行鏡像進行交互命令行(運行完命令退出後,容器會關閉)bash
docker run -it medicean/vulapps:t_thinkphp_1 /bin/bash
前面的宿主的端口,後面爲虛擬機中端口
更多參數請自行查看docker run –h
1) 宿主機向容器中發送文件 (rz)
docker cp ~/test.txt 容器id:/var/www/html/
宿主機文件 容器路徑
2) 容器向宿主機發送文件 (sz)
docker cp 容器id:/var/www/html/test.txt /tmp/
容器內文件 宿主機路徑
1) 中止容器,保存容器狀態,docker start開始後內部狀態不變,相似於虛擬機中的暫停
docker stop 容器ID
2) 終結容器,直接殺死當前容器,docker start開始後內部爲全新狀態
docker kill 容器ID
docker ps 顯示當前處於運行狀態容器
docker ps –a 顯示服務器內所有容器
docker ps –aq 顯示所有容器且只顯示容器ID
docker images 顯示本機docker鏡像
docker images –a 顯示本機所有鏡像,包含中間鏡像(多重構建時經常使用)
docker images aq 顯示所有鏡像且只顯示鏡像ID
docker rm 容器ID 刪除處於關閉狀態的容器
docker rm –f 容器ID 強制刪除容器
docker rm $(docker ps -aq) 刪除本機全部處於關閉狀態的容器
docker rmi 鏡像名[:標籤] 刪除未被用做構建容器的鏡像
docker rmi –f 鏡像名[:標籤] 強制刪除鏡像
docker rmi $(docker images -aq) 刪除本機全部未被使用鏡像
docker commit [–a 做者信息] 容器ID 鏡像名
將容器保存爲鏡像
如:docker commit –a 「rcsec」 a94… wals.culb/library/XXX:…
將ID開頭爲a94的容器保存爲名爲wals.club/library/XXX:…的鏡像
docker tag 鏡像名[:標籤] 鏡像名[:標籤]
將一個鏡像命名爲另外一鏡像名
1) docker exec –it 容器ID 執行命令
如 docker exec –it 容器ID /bin/bash
阻塞當前容器運行命令並執行/bin/bash進入容器命令行
2) docker attach 容器ID
阻塞當前容器守護進程並執行默認終端
能夠經過docker inspect 容器ID 在Entrypoint項中查看
運行attach命令即阻塞sh文件,可能會致使容器中止
docker login 倉庫地址
//登錄對應倉庫,須要手動輸入用戶及密碼
docker login –u 用戶名 –p 密碼 倉庫地址
//指定用戶名,密碼登錄對應倉庫
docker pull 鏡像名
//默認從dockerhub下載鏡像
docker push 鏡像名
//默認向Dockerhub上傳鏡像
在容器裏新建start.sh
#!/bin/bash chmod -R a+x /var/lib/mysql service mysql start service apache2 restart service ssh restart /usr/bin/tail -f /dev/null
在家目錄新建Dockerfile
docker build –t 鏡像名 [--no-cache=true] Dockerfile文件絕對路徑
常見命令說明:docker build –t php:5.5-apache-mysql –no-cache=true .
最後一個參數文件路徑使用 . 含義爲在當前目錄下使用名字爲Dockerfile的文件進行鏡像構建。
經常使用阻塞進程:
/usr/bin/tail –f /dev/null 利用/dev/null黑洞特性 tail命令查詢該文件導致進程阻塞
while true; do sleep 1; done ; 利用while true循環進行阻塞
Dockerfile書寫詳細說明:
https://docs.docker.com/engine/reference/builder/#predefined-args