Docker將應用程序與該程序的依賴,打包在一個文件裏面。node
image 文件生成的容器實例,自己也是一個文件,稱爲容器文件。 一旦容器生成,就會同時存在兩個文件: image 文件和容器文件。 關閉容器並不會刪除容器文件,只是容器中止運行而已,可使用docker rm
來刪除。mysql
列出全部image文件:docker images
程序員
下載鏡像: docker image pull [image name]
web
查看鏡像信息:docker inspect pengj/nodeappk8s:v1.0.0
,查看鏡像的某一部分信息:docker inspect -f {{".Size"}} pengj/nodeappk8s:v1.0.0
sql
查看鏡像的具體內容:docker history pengj/nodeappk8s:v1.0.0
docker
搜索鏡像:docker search mysql
,另外加上過濾參數docker search --filter=stars=100 mysql
ubuntu
刪除鏡像:docker rmi [image]
,加上-f
參數可以強制刪除,即使有容器使用,通常不推薦api
清理鏡像:docker image prune
bash
構建鏡像: docker image build -t [username]/[repository]:[tag]
app
發佈鏡像:docker image push [username]/[repository]:[tag]
給鏡像打標籤, 使用tag
命令添加鏡像標籤,指向同一鏡像文件:docker tag ubuntu:lastest myubuntu:lastest
運行及進入容器:見👇【docker run和docker exec使用】
查看docker中全部的容器:docker ps -a
殺死某個容器:見👇【刪除容器的方法彙總】
暫停某個容器:docker container stop [containID]
查看某個容器日誌:見👇【查看日誌docker logs使用】
docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
--since
: 此參數指定了輸出日誌開始日期,即只輸出指定日期以後的日誌。 -f
: 查看實時日誌 -t
: 查看日誌產生的日期 -tail=10
: 查看最後的10條日誌。 edu_web_1
: 容器名稱(容器名稱)
運行鏡像,使用docker run
docker run -it -p 8000:8000 -v /src/webapp(本地絕對):/opt/webapp(鏡像絕對路徑) ubuntu
-i
打開標準輸入接受用戶的輸入
-t
讓docker分配一個僞終端(pseudo-tty),並綁定到容器的標準輸入上
-u
執行命令的用戶
docker run -p 容器端口:宿主端口
-v 宿主目錄:容器目錄
-d 後臺運行
-e 設置環境變量
-name 容器名稱
--rm 容器終止以後,自動刪除文件
複製代碼
進入容器,查看狀態,其中i
,t
參數說明和docker run
一致
docker exec -it [container_name/container_id] /bin/bash
複製代碼
#顯示全部的容器,過濾出Exited狀態的容器,取出這些容器的ID,
sudo docker ps -a|grep Exited|awk '{print $1}'
#查詢全部的容器,過濾出Exited狀態的容器,列出容器ID,刪除這些容器
sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
複製代碼
#刪除全部未運行的容器(已經運行的刪除不了,未運行的就一塊兒被刪除了)
sudo docker rm $(docker ps -a -q)
複製代碼
#根據容器的狀態,刪除Exited狀態的容器
sudo docker rm $(sudo docker ps -qf status=exited)
複製代碼
# 刪除處於stop的容器或者狀態status=Exited的容器
sudo docker container prune
複製代碼
終止運行的容器文件,依然會佔據硬盤空間,可使用docker rm [containerID]
命令刪除。
刪除none的鏡像,要先刪除鏡像中的容器。要刪除鏡像中的容器,必須先中止容器。
# 中止容器
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 刪除容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
# 刪除鏡像
docker rmi $(docker images | grep "none" | awk '{print $3}')
複製代碼
主要是基於命令:
docker container commit
-a, --author="": 做者信息;
-c, --change=[]: 能夠在提交的時候執行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;
-m, --message="": 提交信息;
-p, --pause=true: 提交時,暫停容器運行。
複製代碼
示例導入過程,須要記住當前容器的編號,假設爲axa0c8cfec3a
:
docker run -it xx:yy /bin/bash
touch news.txt
exit
複製代碼
執行提交命令: docker container commit -m "Added nes.txt file" -a "hapiman" axa0c8cfec3a news:0.1
查看當前鏡像列表:docker images
最多見的方式,略過
docker save
和docker load
查看當前鏡像列表:docker images
導出tar
文件:docker save f59c7e5b1817 >zwx_ub.tar
或者 docker save -o zwx_ub.tar f59c7e5b1817
加載鏡像: docker load < zwx_ub.tar
或者 docker load -i zwx_ub.tar
查看當前鏡像列表:docker images
docker export
和 docker import
導入:cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:zwx
導出:docker export 16f568766019 > ubuntu.tar
,將鏡像編號爲16f568766019
的鏡像導出
docker save images_name
:將一個鏡像導出爲文件,再使用docker load命令將文件導入爲一個鏡像,會保存該鏡像的的全部歷史記錄。比docker export命令導出的文件大,很好理解,由於會保存鏡像的全部歷史記錄。 docker export container_id
:將一個容器導出爲文件,再使用docker import命令將容器導入成爲一個新的鏡像,可是相比docker save命令,容器文件會丟失全部元數據和歷史記錄,僅保存容器當時的狀態,至關於虛擬機快照
一個探討技術,金融,賺錢
的小圈子,爲你提供最有味道
的內容,日日更新!