Docker 使用命令
目錄
Docker使用
Docker映象使用
當執行容器時,使用的映象如果在本地中不存在,docker 就會自動從 docker 映象倉庫中下載,預設是從 Docker Hub 公共映象源下載
- 管理和使用本地 Docker 主機映象
- 建立映象
列出映象列表
docker images
各個選項說明:
REPOSITORY:表示映象的倉庫源
TAG:映象的標籤
IMAGE ID:映象ID
CREATED:映象建立時間
SIZE:映象大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如 python 倉庫源裡,有 等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的映象。
所以,我們如果要使用版本為15.10的ubuntu系統映象來執行容器時,命令如下:
docker run -dit ubuntu:15.10 /bin/bash
引數說明:
-i: 互動式操作。
-t: 終端。
ubuntu:15.10: 這是指用 ubuntu 15.10 版本映象為基礎來啟動容器。
/bin/bash:放在映象名後的是命令,這裡我們希望有個互動式 Shell,因此用的是 /bin/bash。
如果你不指定一個映象的版本標籤,例如你只使用 ubuntu,docker 將預設使用 ubuntu:latest 映象。
獲取一個新的映象
當我們在本地主機上使用一個不存在的映象時 Docker 就會自動下載這個映象。如果我們想預先下載這個映象,我們可以使用 docker pull
docker pull kafka
下載完成後,我們可以直接使用這個映象來執行容器。
查詢映象
我們可以從 Docker Hub 網站來搜尋適合我們的映象.
docker search kafka
引數說明:
NAME: 映象倉庫源的名稱
DESCRIPTION: 映象的描述
OFFICIAL: 是否 docker 官方釋出
stars: 類似 Github 裡面的 star,表示點贊、喜歡的意思。
AUTOMATED: 自動構建。
下載完成後,我們就可以使用這個映象了
docker run -d kafka
建立映象
當我們從 docker 映象倉庫中下載的映象不能滿足我們的需求時,我們可以通過以下兩種方式對映象進行更改。
- 從已經建立的容器中更新映象,並且提交這個映象
- 使用 Dockerfile 指令來建立一個新的映象
1. 從已經建立的容器中更新映象,並且提交這個映象
更新映象之前,我們需要使用映象來建立一個容器。
docker run -it kafka /bin/bash
在執行的容器內使用 apt-get update 命令進行更新。
退出這個容器:
exit
此時 ID 為 c2c789d2d3c5 的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit 來提交容器副本
docker commit -m="has update" -a="blue" c2c789d2d3c5 blue/kafka:v2
各個引數說明:
-m: 提交的描述資訊
-a: 指定映象作者
c2c789d2d3c5:容器 ID
blue/kafka:v2: 指定要建立的目標映象名
我們可以使用 docker images 命令來檢視我們的新映象 blue/kafka:v2
docker images
使用我們的新映象來啟動一個容器
docker run -dit blue/kafka:v2 /bin/bash
2. 使用 Dockerfile 指令來建立一個新的映象
我們使用命令 docker build , 從零開始來建立一個新的映象。為此,我們需要建立一個 Dockerfile 檔案,其中包含一組指令來告訴 Docker 如何構建我們的映象。
每一個指令都會在映象上建立一個新的層,每一個指令的字首都必須是大寫的。
第一條FROM,指定使用哪個映象源
RUN 指令告訴docker 在映象內執行命令,安裝了什麼。。。
然後,我們使用 Dockerfile 檔案,通過 docker build 命令來構建一個映象
引數說明:
-t :指定要建立的目標映象名
. :Dockerfile 檔案所在目錄,可以指定Dockerfile 的絕對路徑
設定映象標籤
我們可以使用 docker tag 命令,為映象新增一個新的標籤。
docker tag 860c279d2fec runoob/centos:dev
docker tag 映象ID,這裡是 860c279d2fec ,使用者名稱稱、映象源名(repository name)和新的標籤名(tag)。
docker tag 映象ID,這裡是 860c279d2fec ,使用者名稱稱、映象源名(repository name)和新的標籤名(tag)。
使用 docker images 命令可以看到,ID為860c279d2fec的映象多一個標籤。
Docker容器使用
docker pull xxx
docker run -it xxx /bin/bash
引數說明:
-i: 互動式操作。
-t: 終端。
ubuntu: ubuntu 映象。
/bin/bash:放在映象名後的是命令,這裡我們希望有個互動式 Shell,因此用的是 /bin/bash。
要退出終端,直接輸入:
exit
啟動已停止執行的容器
$ docker ps -a
$ docker start b750bbbcfd88
後臺執行
在大部分的場景下,我們希望 docker 的服務是在後臺執行的,我們可以過 -d 指定容器的執行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
停止一個容器
$ docker stop <容器 ID>
停止的容器可以通過 docker restart 重啟:
$ docker restart <容器 ID>
進入容器
在使用 -d 引數時,容器啟動後會進入後臺。此時想要進入容器,可以通過以下指令進入:
docker attach
docker exec:推薦大家使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止。
exec 命令
docker exec -it 243c32535da7 /bin/bash
匯出和匯入容器
匯出容器
如果要匯出本地某個容器,可以使用 docker export 命令
$ docker export 1e560fca3906 > ubuntu.tar
這樣將匯出容器快照到本地檔案。
刪除容器
刪除容器使用 docker rm 命令:
$ docker rm -f 1e560fca3906
清理掉所有處於終止狀態的容器。
$ docker container prune
執行一個web應用
我們將在docker容器中執行一個 Python Flask 應用來執行一個web應用。
docker pull training/webapp # 載入映象
docker run -d -P training/webapp python app.py
引數說明:
-
-d:讓容器在後臺執行。
-
-P:將容器內部使用的網路埠隨機對映到我們使用的主機上。
檢視 WEB 應用容器
使用 docker ps 來檢視我們正在執行的容器:
runoob@runoob:~# docker ps
CONTAINER ID IMAGE COMMAND ... PORTS
d3d5e39ed9d3 training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp
Docker 開放了 5000 埠(預設 Python Flask 埠)對映到主機埠 32769 上。
這時我們可以通過瀏覽器訪問WEB應用: 127.0.0.1:32769
我們也可以通過 -p 引數來設定不一樣的埠:
$ docker run -d -p 5000:5000 training/webapp python app.py
檢視正在執行的容器: docker ps
runoob@runoob:~# docker ps
CONTAINER ID IMAGE PORTS NAMES
bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar
d3d5e39ed9d3 training/webapp ... 0.0.0.0:32769->5000/tcp xenodochial_hoov
容器內部的 5000 埠對映到我們本地主機的 5000 埠上。
網路埠的快捷方式
通過 docker ps 命令可以檢視到容器的埠對映,
docker 還提供了另一個快捷方式 docker port,使用 docker port 可以檢視指定 (ID 或者名字)容器的某個確定埠對映到宿主機的埠號。
檢視WEB應用程式容器的程序
docker top 容器ID
檢查 WEB 應用程式
使用 docker inspect 來檢視 Docker 的底層資訊。
它會返回一個 JSON 檔案記錄著 Docker 容器的配置和狀態資訊。
docker inspect 容器ID