一.幫助命令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