沒有示例的命令,將 container_name/image_name進行對應替換.
docker中有REPOSITORY, TAG, IMAGE,CONTAINER的概念
docker命令中的鏡像名,容器名 支持使用Tab鍵進行聯想
1 Docker容器docker中默認的命令是對容器進行操作 ,現在看到容器相關的命令是默認沒有container的。簡單舉例:docker run是docker container run的簡寫。
1.1 docker run 運行一個新的容器# 參數說明
## 常用參數
-d # 後臺運行容器,並返回容器ID
-p # 指定埠映射,格式為:主機(宿主)埠:容器埠
--name # 為容器指定一個名稱;
-v # 綁定一個卷,映射本地實際路徑 --volume
-a stdin # 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項
--cpuset="0-2" 或 --cpuset="0,1,2" # 綁定容器到指定CPU運行
--dns 8.8.8.8 #指定容器使用的DNS伺服器,默認和宿主一致
--dns-search example.com # 指定容器DNS搜索域名,默認和宿主一致
-e username="ritchie" # 設置環境變量
--env-file=[] # 從指定文件讀入環境變量
--expose=[] # 開放一個埠或一組埠
-h "mars" # 指定容器的hostname
-i # 以交互模式運行容器,通常與 -t 同時使用
--link=[] # 添加連結到另一個容器
-m # 設置容器使用內存最大值
--net="bridge" # 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型
-P # 隨機埠映射,容器內部埠隨機映射到主機的埠 # 大寫P
--rm # 容器退出後自動清理本容器,用於創建臨時容器
-t # 為容器重新分配一個偽輸入終端,通常與 -i 同時使用
# 示例
# 使用鏡像nginx:latest以後臺模式啟動一個名為mynginx的容器,其中將容器外8080埠映射到容器內,主機目錄 /data 映射到容器內/data
docker run --name mynginx -d -p 8080:80 -v /data:/data nginx:latest
docker run -it nginx:latest /bin/bash # 以交互式命令啟動一個容器
1.2 docker create 創建容器但不啟動參數命令同docker run
1.3 啟動/停止/重啟/殺掉容器docker start container_name # 啟動一個停止狀態的容器
docker stop contaniner_name # 停止
docker restart container_name # 重啟
docker kill container_name
docker kill -s container_name # -s 向即將殺掉的容器內發送一個信號
1.4 刪除容器docker rm container_name
1.5 進入容器通過容器名或者容器ID進入指定的容器。
docker exec -it container_name
docker exec -it container_id
# 參數說明
-i # 即使沒有附加也保持STDIN 打開
-t # 分配一個偽終端
-d # 採用在後臺運行的分離模式, 我自己用的比較少
# 以交互的模式執行容器內為/home/start_nginx.sh的腳本
docker exec -it mynginx /bin/sh /home/start_nginx.sh
1.6 查看容器運行狀態docker ps # 列出容器
docker ps -a # 列出所有容器(含未運行容器)
# 參數說明
-f # 根據條件過濾顯示的內容
--format # 指定返回值的模板文件
-l # 顯示最近創建的容器
-n # 列出最近創建的n個容器
--no-trunc # 不截斷輸出
-q # 靜默模式,只顯示容器編號
-s # 顯示總的文件大小
# 說明
docker ps命令執行後,顯示的COMMAND列顯示的是 啟動容器時運行的命令
2 鏡像2.1 本地鏡像管理 2.1.1 加載本地鏡像docker load < ***.tar # 導入本地的docker鏡像
docker load -i ***.tar
docker load --input ***.tar
2.1.2 保存鏡像docker save -o out_image.tar test/ubuntu:v3
docker save test/ubuntu:v3 > out_image.tar
# 更多說明
docker save 保存的是鏡像(image),docker export 保存的是容器(container);
docker load 用來載入鏡像包,docker import 用來載入容器包,但兩者都會恢復為鏡像;
docker load 不能對載入的鏡像重命名,而 docker import 可以為鏡像指定新名稱。
2.1.3 查看本地鏡像docker images # 列出本地鏡像
docker images test # 列出本地鏡像中倉庫repository為test的鏡像
# 參數說明
-a # 列出本地所有的鏡像
--digests # 顯示鏡像的摘要信息
-f # 顯示滿足條件的鏡像
--format # 指定返回值的模板文件
--no-trunc # 顯示完整的鏡像信息
-q # 只顯示鏡像ID
2.1.4 刪除本地鏡像docker image rm image_name # 刪除本地鏡像
docker image rm -f image_name # 強制刪除本地鏡像
docker rmi image_name1 image_name2 # 刪除多個本地鏡像
docker rmi -f image_name1 image_name2 # 強制刪除多個本地鏡像
# docker pure命令
docker image pure # 刪除所有未被 tag 標記和未被容器使用的鏡像
docker image prune -a # 刪除所有未被容器使用的鏡像
docker container prune # 刪除所有停止運行的容器
2.1.5 創建鏡像docker build [OPTIONS] PATH | URL | -
# 參數說明
--build-arg=[] # 設置鏡像創建時的變量
--cpu-shares # 設置 cpu 使用權重
--cpu-period # 限制 CPU CFS周期
--cpu-quota # 限制 CPU CFS配額
--cpuset-cpus # 指定使用的CPU id
--cpuset-mems # 指定使用的內存 id
--disable-content-trust # 忽略校驗,默認開啟
-f # 指定要使用的Dockerfile路徑
--force-rm # 設置鏡像過程中刪除中間容器
--isolation # 使用容器隔離技術
--label=[] # 設置鏡像使用的元數據
-m # 設置內存最大值
--memory-swap # 設置Swap的最大值為內存+swap,"-1"表示不限swap
--no-cache # 創建鏡像的過程不使用緩存
--pull # 嘗試去更新鏡像的新版本
--quiet, -q # 安靜模式,成功後只輸出鏡像 ID
--rm # 設置鏡像成功後刪除中間容器
--shm-size # 設置/dev/shm的大小,默認值是64M
--ulimit # Ulimit配置
--squash # 將 Dockerfile 中所有的操作壓縮為一層
--tag, -t # 鏡像的名字及標籤,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標籤
--network # 默認 default。在構建期間設置RUN指令的網絡模式
# 示例
docker build -t test/ubuntu:v1 . # 使用當前目錄的 Dockerfile 創建鏡像,標籤為 test/ubuntu:v
docker build github.com/creack/docker-firefox # 使用URL的 Dockerfile 創建鏡像。
2.2 遠程鏡像Docker Hub遠程鏡像的概念可以參照git,區別在於git存儲的是代碼,遠程鏡像庫存儲的是docker鏡像。
2.2.1 docker pulldocker pull java
docker pull -a java # 下載REPOSITORY為java的所有鏡像
2.2.2 docker pushdocker push mynginx:v1 # 上傳本地鏡像mynginx:v1到遠程鏡像庫
3 Docker版本信息docker info # 顯示docker詳細信息
docker version # 顯示docker版本信息