Docker 服務常用命令

https://www.jianshu.com/p/9fd2f77001a3
Docker 服務常用命令

設置 Docker 服務自動啓動

sudo systemctl enable docker.service

啓動 Docker 服務

sudo systemctl start docker.service

關閉 Docker 服務

sudo systemctl stop docker.service

查看 Docker 服務狀態

sudo systemctl status docker.service

Docker 鏡像常用命令

搜索鏡像:可使用 docker search 命令搜索存放在 Docker Hub 中的鏡像,顯示的信息包括:

屬性
描述

NAME
鏡像倉庫名稱

DESCRIPTION
鏡像倉庫描述

STARS
鏡像倉庫收藏數

OFFICAL
是否官方庫

AUTOMATED
是否自動構建的鏡像倉庫

docker search java

下載鏡像:通過 docker pull 命令從 Docker Registry 上下載鏡像

docker pull java
docker pull reg.itmuch.com/java:7 //指定下載鏡像的標籤以及 Docker Registry

列出鏡像,顯示的信息包括:

屬性
描述

REPOSITORY
鏡像所屬倉庫名

TAG
鏡像標籤,默認是 latest,表示最新

IMAGE ID
鏡像ID

CREATED
鏡像創建時間

SIZE
鏡像大小

docker images

刪除本地鏡像

docker rmi hello-world #刪除指定名稱鏡像
docker rmi -f $(docker images) #刪除所有鏡像

Docker 容器常用命令

通過 docker run 新建並啓動容器,還可以附加一些常用選項

-d:表示後臺運行
-P:隨機端口映射
-v:指定掛載目錄
-it:創建一個交互式的容器
-p:指定端口映射,ip 表示主機 IP、hostPort 表示宿主主機端口、containerPort 表示容器端口,有以下四種格式:

ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort

-network:指定網絡模式,該選項有以下可選參數

-network=bridge:默認選項,表示連接到默認的網橋
-network=host:容器使用的宿主機器的網絡
-network=container:NAME_or_ID:告訴 Docker 讓新建的容器使用已有的容器網絡配置
-network=none:不配置容器網絡,用戶可自定義網絡配置

下面命令會讓終端打印 Hello World 字樣,跟在本地直接執行 /bin/echo 'Hello World' 一樣

docker run java /bin/echo 'Hello World'

啓動一個 Nginx 容器(默認Nginx配置爲80端口),指定宿主機端口(這裏指定端口爲91),當訪問 http://Docker宿主機IP:91/ 時會映射到容器80端口中,即可看到 Nginx 主頁

docker run -d -p 91:80 nginx

docker run 命令在創建容器時,會檢查本地是否存在指定鏡像,如果不存在則從 Docker Hub 下載並啓動

列出容器

使用 docker ps 命令即可列出運行中的容器,顯示的信息包括:

屬性
描述

CONTAINER_ID
容器ID

IMAGE
鏡像名稱

COMMAND
啓動容器時運行的命令

CREATED
容器創建的時間

STATUS
容器運行的狀態,UP 表示運行中,Exited 已停止

PORTS
容器對外端口號

NAMES
容器名稱,默認由 Docker 自動生成,也可使用 docker run --name 選項指定

docker ps
docker ps -a #顯示容器,包含停止的容器

停止容器

使用 docker stop 命令停止容器,784fd3b294d7 爲容器 ID,也可使用容器名稱來停止容器

docker stop 784fd3b294d7

強制停止容器

docker kill 784fd3b294d7

啓動停止的容器

通過 docker run 命令即可新建並啓動一個容器,對於已停止的容器,可使用 docker start 命令來啓動

docker start 784fd3b294d7

重啓容器

可使用 docker restart 命令來重啓容器

docker restart

進入容器

某些場景下,可能需要進入運行中的容器

使用 docker attach 命令進入容器(已過時),當多個窗口同時 attach 到同一個容器時所有窗口都會同步顯示,同理阻塞的時候其它窗口也無法操作

docker attach 784fd3b294d7

使用 exec 命令進入容器(推薦)

docker exec -i -t 784fd3b294d7 /bin/bash

使用 exit 退出容器

若使用 attach 方式進入容器,執行 exit 容器也會被關閉
若使用 exec 方式進入容器,執行 exit 容器不會被關閉

exit

獲得 PID 後,就可以使用 nsenter 命令進入容器了

nsenter --target "$PID" --mount --uts --ipc --net --pid

刪除容器

使用 docker rm 命令刪除指定容器,該命令只能刪除停止運行的容器

docker rm 784fd3b294d7

如果需要刪除正在運行的容器,可使用 -f

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

數據拷貝

docker cp 命令用於容器與主機之間的數據拷貝

將主機 /www/runoob 目錄拷貝到容器 96f7f14e99ab 的 /www 目錄下

docker cp /www/runoob 96f7f14e99ab:/www/

將容器 96f7f14e99ab 的 /www 目錄拷貝到主機的 /tmp 目錄中

docker cp 96f7f14e99ab:/www /tmp/

獲取容器/鏡像的元數據

通過 docker inspect 來獲取元數據,包含掛載目錄信息等

docker inspect linyuantongxue/docker-demo:0.0.1

Docker 掛載目錄

掛載目錄後鏡像內就可以共享宿主機裏的文件
通過 run -v 參數指定掛載目錄(格式:宿主機目錄:鏡像內掛載目錄),如果宿主機目錄不存在則創建
Centos7 中本地掛載的目錄在容器中沒有執行權限,通過 --privileged=true 給容器加特權
下面以 centos 鏡像爲例:

通過 Centos 鏡像運行一個容器,並設置掛載目錄

docker run -it -v /home/linyuan/Downloads/data:/data centos

此時可看到宿主機上 /home/linyuan/Downloads 文件夾下多出了 /data 目錄
因爲通過 -it 參數,已進入容器內部,通過 ls -a 命令查看文件夾,可看見多出 /data 目錄,通過 cd 命令進入文件夾下並新建文件 touch a.txt
可看見宿主機 /data 目錄也會存在該文件

作者:林塬
鏈接:https://www.jianshu.com/p/9fd2f77001a3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章