docker命令學習記錄

一.幫助命令nginx

docker version
docker info
docker --help

二.鏡像命令web

1.列出本地主機上的鏡像docker

docker images

OPTIONS說明: 
-a :列出本地全部的鏡像(含中間映像層)
-q :只顯示鏡像ID
--digests :顯示鏡像的摘要信息
--no-trunc :顯示完整的鏡像信息centos

2.查找鏡像(https://hub.docker.com)bash

docker search [OPTIONS] 鏡像名字

OPTIONS說明:
--no-trunc : 顯示完整的鏡像描述
-s : 列出收藏數不小於指定值的鏡像
--automated : 只列出 automated build類型的鏡像ui

3.下載鏡像命令行

docker pull 鏡像名字[:TAG]

4.刪除鏡像3d

刪除單個rest

docker rmi -f 鏡像ID

刪除多個日誌

docker rmi -f 鏡像名1:TAG 鏡像名2:TAG

刪除所有

docker rmi -f $(docker images -qa)

5.TODO

三.容器命令

有鏡像才能建立容器(下載一個CentOS鏡像演示)

docker pull centos

1.新建並啓動容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 OPTIONS說明(經常使用):有些是一個減號,有些是兩個減號
 -i:以交互模式運行容器,一般與 -t 同時使用;
-t:爲容器從新分配一個僞輸入終端,一般與 -i 同時使用;

docker run -it centos

--name="容器新名字": 爲容器指定一個名稱;

docker run -it --name mycentos centos

-d: 後臺運行容器,並返回容器ID,也即啓動守護式容器;

docker run -d 容器名

問題:而後docker ps -a 進行查看, 會發現容器已經退出
很重要的要說明的一點: Docker容器後臺運行,就必須有一個前臺進程.
容器運行的命令若是不是那些一直掛起的命令(好比運行top,tail),就是會自動退出的。
 這個是docker的機制問題,好比你的web容器,咱們以nginx爲例,正常狀況下,咱們配置啓動服務只須要啓動響應的service便可。例如
service nginx start
可是,這樣作,nginx爲後臺進程模式運行,就致使docker前臺沒有運行的應用,
這樣的容器後臺啓動後,會當即自殺由於他以爲他沒事可作了.
因此,最佳的解決方案是,將你要運行的程序之前臺進程的形式運行
 

-P: 隨機端口映射;
-p: 指定端口映射,有如下四種格式
      ip:hostPort:containerPort
      ip::containerPort
      hostPort:containerPort
      containerPort

2.列出容器

docker ps [OPTIONS]

列出當前全部正在運行的容器

docker ps

OPTIONS說明(經常使用):
 -a :列出當前全部正在運行的容器+歷史上運行過的
-l :顯示最近建立的容器。
-n:顯示最近n個建立的容器。
-q :靜默模式,只顯示容器編號。
--no-trunc :不截斷輸出。
3.退出容器

exit 容器中止並退出(關機)

ctrl+P+Q  容器不中止直接退出(待機)

4.啓動容器

docker start 容器ID或者容器名

5.重啓容器

docker restart 容器ID或者容器名

6.中止容器

docker stop 容器ID或者容器名

7.強制中止容器

docker kill 容器ID或者容器名

8.刪除容器

刪除已中止的容器

docker rm 容器ID

刪除運行中的容器

docker rm -f 容器ID

一次性刪除多個容器

docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

9.查看容器日誌

docker logs -f -t --tail 容器ID

-t 是加入時間戳

-f 跟隨最新的日誌打印

--tail 數字 顯示最後多少條

10.查看容器內運行的進程

docker top 容器ID

11.查看容器內部細節

docker inspect 容器ID

12.進入正在運行的容器並以命令行交互

docker attach 容器ID
docker exec -it 容器ID bashShell

attach 直接進入容器啓動命令的終端,不會啓動新的進程

exec 是在容器中打開新的終端,而且能夠啓動新的進程

exec更強大,能夠作attach作的事情。

docker exec -it b6a7d03b7974 /bin/bash

13.從容器內拷貝文件到主機上

docker cp  容器ID:容器內路徑 目的主機路徑

14.將容器狀態提交爲鏡像

docker commit -m=「提交的描述信息」 -a=「做者」 容器ID 要建立的目標鏡像名:[標籤名]

四.Docker容器數據卷

1.容器內添加

(1)直接命令添加

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄      鏡像名

查看數據卷是否掛載成功

docker inspect 容器ID

容器和宿主機之間可實現數據共享

容器中止退出,主機修改後從新啓動容器,數據同步

數據對容器只讀命令

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名

(2)DockerFile添加

使用VOLUME指令來給鏡像添加一個或多個數據卷

# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash

啓動後宿主機對應的目錄位置

Docker掛載主機目錄Docker訪問出現cannot open directory .: Permission denied
解決辦法:在掛載目錄後多加一個--privileged=true參數便可

五.數據卷容器 容器間傳遞共享(--volumes-from)

docker run -it --name dc02 --volumes-from dc01 zzyy/centos

相關文章
相關標籤/搜索