Docker經常使用命令備忘

docker介紹

Docker將應用程序與該程序的依賴,打包在一個文件裏面。node

image 文件生成的容器實例,自己也是一個文件,稱爲容器文件。 一旦容器生成,就會同時存在兩個文件: image 文件和容器文件。 關閉容器並不會刪除容器文件,只是容器中止運行而已,可使用docker rm來刪除。mysql

docker操做命令

列出全部image文件:docker images程序員

下載鏡像: docker image pull [image name]web

查看鏡像信息:docker inspect pengj/nodeappk8s:v1.0.0,查看鏡像的某一部分信息:docker inspect -f {{".Size"}} pengj/nodeappk8s:v1.0.0sql

查看鏡像的具體內容:docker history pengj/nodeappk8s:v1.0.0docker

搜索鏡像:docker search mysql,另外加上過濾參數docker search --filter=stars=100 mysqlubuntu

刪除鏡像:docker rmi [image],加上-f參數可以強制刪除,即使有容器使用,通常不推薦api

清理鏡像:docker image prunebash

構建鏡像: 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使用

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 exec使用

運行鏡像,使用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]命令刪除。

docker 如何刪除none鏡像

刪除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}')
複製代碼

建立鏡像的兩種方法

第1、基於已有的鏡像建立

主要是基於命令:

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

第2、基於 Dockerfile 來建立

最多見的方式,略過

docker的導入導出操做

  • 方法1、使用docker savedocker 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

  • 方法2、使用docker exportdocker 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命令,容器文件會丟失全部元數據和歷史記錄,僅保存容器當時的狀態,至關於虛擬機快照

歡迎關注公號:程序員的金融圈

一個探討技術,金融,賺錢的小圈子,爲你提供最有味道的內容,日日更新!

相關文章
相關標籤/搜索