Docker 命令小全


引言

現已將docker安裝好,接下來,讓我們一同小試下docker的常見命令。

常規命令

  • 查看docker的版本信息
[root@OzanZone docker]# docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:20:16 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:23:58 2018
  OS/Arch:      linux/amd64
  Experimental: false
  • 首先查看docker的狀態
[root@OzanZone ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: https://docs.docker.com

May 16 14:19:59 OzanZone dockerd-current[20262]: time="2018-05-16T14:19:59.259061994..."
May 16 14:19:59 OzanZone dockerd-current[20262]: time="2018-05-16T14:19:59.259136643..."
May 16 14:19:59 OzanZone dockerd-current[20262]: time="2018-05-16T14:19:59.259688339..."
May 16 14:19:59 OzanZone dockerd-current[20262]: time="2018-05-16T14:19:59.259740795...1
May 16 14:19:59 OzanZone systemd[1]: Started Docker Application Container Engine.
May 16 14:19:59 OzanZone dockerd-current[20262]: time="2018-05-16T14:19:59.274995637..."
May 16 15:19:28 OzanZone systemd[1]: Stopping Docker Application Container Engine...
May 16 15:19:28 OzanZone dockerd-current[20262]: time="2018-05-16T15:19:28.600812740..."
May 16 15:19:28 OzanZone dockerd-current[20262]: time="2018-05-16T15:19:28.612787038..."
May 16 15:19:29 OzanZone systemd[1]: Stopped Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
  • 啟動 Docker 后臺服務
[root@OzanZone ~]# systemctl start docker
  • 測試運行 hello-world
    由于本地沒有hello-world這個鏡像,所以會下載一個hello-world的鏡像,并在容器內運行。
[root@OzanZone docker]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete 
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/
[root@OzanZone ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
98e984d651ba        hello-world         "/hello"            18 minutes ago      Exited (0) 18 minutes ago                       stoic_ritchie

鏡像加速

鑒于國內網絡問題,后續拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的鏡像地址:http://hub-mirror.c.163.com
新版的 Docker 使用/etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon
請在該配置文件中加入(沒有該文件的話,請先建一個):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Docker Hello World

Docker 允許你在容器內運行應用程序, 使用docker run命令來在容器內運行一個應用程序。
輸出Hello world

runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

各個參數解析:

  • docker: Docker 的二進制執行文件。
  • run:與前面的 docker 組合來運行一個容器。
  • ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
  • /bin/echo "Hello world": 在啟動的容器里執行的命令

以上命令完整的意思可以解釋為:Docker 以 ubuntu15.10 鏡像創建一個新容器,然后在容器里執行 bin/echo "Hello world",然后輸出結果。


運行交互式的容器

我們通過docker的兩個參數 -i -t,讓docker運行的容器實現"對話"的能力

runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#

各個參數解析:

  • -t:在新容器內指定一個偽終端或終端。
  • -i:允許你對容器內的標準輸入 (STDIN) 進行交互

此時我們已進入一個 ubuntu15.10系統的容器
我們嘗試在容器中運行命令cat /proc/versionls分別查看當前系統的版本信息當前目錄下的文件列表

我們可以通過運行exit命令或者使用CTRL+D來退出容器。


啟動容器(后臺模式)

使用以下命令創建一個以進程方式運行的容器

runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

在輸出中,我們沒有看到期望的"hello world",而是一串長字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
這個長字符串叫做容器ID,對每個容器來說都是唯一的,我們可以通過容器ID來查看對應的容器發生了什么。
首先,我們需要確認容器有在運行,可以通過 docker ps 來查看

runoob@runoob:~$ docker ps

CONTAINER ID:容器ID
NAMES:自動分配的容器名稱
在容器內使用docker logs命令,查看容器內的標準輸出

runoob@runoob:~$ docker logs 2b1b7a428627
runoob@runoob:~$ docker logs amazing

停止容器

我們使用 docker stop 命令來停止容器:

通過docker ps查看,容器已經停止工作:

runoob@runoob:~$ docker ps

也可以用下面的命令來停止:

runoob@runoob:~$ docker stop amazing_cori

Docker 容器使用

Docker 客戶端

docker 客戶端非常簡單 ,我們可以直接輸入 docker 命令來查看到 Docker 客戶端的所有命令選項。

runoob@runoob:~# docker

可以通過命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如我們要查看 docker stats 指令的具體使用方法:

runoob@runoob:~# docker stats --help

運行一個web應用

前面我們運行的容器并沒有一些什么特別的用處。
接下來讓我們嘗試使用 docker 構建一個 web 應用程序。
我們將在docker容器中運行一個 Python Flask 應用來運行一個web應用。

runoob@runoob:~# docker pull training/webapp  # 載入鏡像
runoob@runoob:~# docker run -d -P training/webapp python app.py

參數說明:
-d:讓容器在后臺運行。
-P:將容器內部使用的網絡端口映射到我們使用的主機上。

查看 WEB 應用容器
使用 docker ps 來查看我們正在運行的容器

runoob@runoob:~$ docker ps

這里多了端口信息。

PORTS
0.0.0.0:32768->5000/tcp

Docker 開放了 5000 端口(默認 Python Flask 端口)映射到主機端口 32768 上。
這時我們可以通過瀏覽器訪問WEB應用

我們也可以通過 -p 參數來設置不一樣的端口:

runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker ps查看正在運行的容器


容器內部的 5000 端口映射到我們本地主機的 5000 端口上。


網絡端口的快捷方式

通過docker ps命令可以查看到容器的端口映射,docker還提供了另一個快捷方式:docker port,使用 docker port 可以查看指定 (ID或者名字)容器的某個確定端口映射到宿主機的端口號。

上面我們創建的web應用容器ID為:5fac5dd980ad82b30 名字為:thirsty_sinoussi 我可以使用docker port 5fac5dd980ad82b30 或docker port thirsty_sinoussi來查看容器端口的映射情況


查看WEB應用程序日志

docker logs [ID或者名字] 可以查看容器內部的標準輸出。

[root@OzanZone docker]# docker logs 5fac5dd980ad
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
58.222.192.194 - - [17/May/2018 07:38:22] "GET / HTTP/1.1" 200 -

-f:讓 dokcer logs 像使用 tail -f 一樣來輸出容器內部的標準輸出。
從上面,我們可以看到應用程序使用的是 5000 端口并且能夠查看到應用程序的訪問日志。


查看WEB應用程序容器的進程

我們還可以使用 docker top 來查看容器內部運行的進程

runoob@runoob:~$ docker top determined_swanson

檢查WEB應用程序

使用 docker inspect 來查看Docker的底層信息。它會返回一個 JSON 文件記錄著 Docker 容器的配置和狀態信息。

runoob@runoob:~$ docker inspect determined_swanson
[
    {
        "Id": "7a38a1ad55c6914b360b565819604733db751d86afd2575236a70a2519527361",
        "Created": "2016-05-09T16:20:45.427996598Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
......

停止WEB應用容器

runoob@runoob:~$ docker stop determined_swanson   
determined_swanson

重啟WEB應用容器

已經停止的容器,我們可以使用命令 docker start 來啟動。

runoob@runoob:~$ docker start determined_swanson
determined_swanson

docker ps -l 查詢最后一次創建的容器:

正在運行的容器,我們可以使用 docker restart命令來重啟


移除WEB應用容器

我們可以使用 docker rm 命令來刪除不需要的容器

runoob@runoob:~$ docker rm determined_swanson  
determined_swanson

刪除容器時,容器必須是停止狀態,否則會報如下錯誤

runoob@runoob:~$ docker rm determined_swanson
Error response from daemon: You cannot remove a running container 7a38a1ad55c6914b360b565819604733db751d86afd2575236a70a2519527361. Stop the container before attempting removal or use -f

Docker 鏡像使用

當運行容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認是從 Docker Hub 公共鏡像源下載。

下面我們來學習:
1、管理和使用本地 Docker 主機鏡像
2、創建鏡像

列出鏡像列表

我們可以使用 docker images 來列出本地主機上的鏡像。

runoob@runoob:~$ docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        11 months ago       348.8 MB

各個選項說明:

  • REPOSITORY:表示鏡像的倉庫源
  • TAG:鏡像的標簽
  • IMAGE ID:鏡像ID
  • CREATED:鏡像創建時間
  • SIZE:鏡像大小

同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如ubuntu倉庫源里,有15.10、14.04等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
所以,我們如果要使用版本為15.10的ubuntu系統鏡像來運行容器時,命令如下:

runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

如果要使用版本為14.04的ubuntu系統鏡像來運行容器時,命令如下:

runoob@runoob:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/# 

如果你不指定一個鏡像的版本標簽,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像。


獲取一個新的鏡像

當我們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像。如果我們想預先下載這個鏡像,我們可以使用 docker pull 命令來下載它。

Crunoob@runoob:~$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10

下載完成后,我們可以直接使用這個鏡像來運行容器。


查找鏡像

我們可以從 Docker Hub 網站來搜索鏡像,Docker Hub 網址為: https://hub.docker.com/
我們也可以使用 docker search 命令來搜索鏡像。比如我們需要一個httpd的鏡像來作為我們的web服務。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。

runoob@runoob:~$  docker search httpd
  • NAME:鏡像倉庫源的名稱
  • DESCRIPTION:鏡像的描述
  • OFFICIAL:是否docker官方發布

拖取鏡像

我們決定使用上圖中的httpd 官方版本的鏡像,使用命令 docker pull 來下載鏡像。

runoob@runoob:~$ docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
8b87079b7a06: Pulling fs layer 
a3ed95caeb02: Download complete 
0d62ec9c6a76: Download complete 
a329d50397b9: Download complete 
ea7c1f032b5c: Waiting 
be44112b72c7: Waiting

下載完成后,我們就可以使用這個鏡像了。

runoob@runoob:~$ docker run httpd

創建鏡像

當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。

  • 1.從已經創建的容器中更新鏡像,并且提交這個鏡像
  • 2.使用 Dockerfile 指令來創建一個新的鏡像

更新鏡像

更新鏡像之前,我們需要使用鏡像來創建一個容器。

runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/# 

在運行的容器內使用 apt-get update 命令進行更新。
在完成操作之后,輸入exit命令來退出這個容器。
此時ID為e218edb10161的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。

runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

各個參數說明:

  • -m:提交的描述信息
  • -a:指定鏡像作者
  • e218edb10161:容器ID
  • runoob/ubuntu:v2:指定要創建的目標鏡像名

我們可以使用 docker images 命令來查看我們的新鏡像 runoob/ubuntu:v2:

runoob@runoob:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB

使用我們的新鏡像 runoob/ubuntu 來啟動一個容器

runoob@runoob:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash                            
root@1a9fbdeb5da3:/#

構建鏡像

我們使用命令 docker build , 從零開始來創建一個新的鏡像。為此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像內執行命令,安裝了什么。。。
然后,我們使用 Dockerfile 文件,通過 docker build 命令來構建一個鏡像。

runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......

參數說明:

  • -t :指定要創建的目標鏡像名
  • . :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑

使用docker images 查看創建的鏡像已經在列表中存在,鏡像ID為860c279d2fec

runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
hello-world         latest              690ed74de00f        6 months ago         960 B
centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB

我們可以使用新的鏡像來創建容器

runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id runoob
uid=500(runoob) gid=500(runoob) groups=500(runoob)

從上面看到新鏡像已經包含我們創建的用戶runoob


設置鏡像標簽

我們可以使用docker tag 命令,為鏡像添加一個新的標簽。

runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev

docker tag 鏡像ID,這里是 860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標簽名(tag)。
使用 docker images 命令可以看到,ID為860c279d2fec的鏡像多一個標簽。

runoob@runoob:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/centos       6.7                 860c279d2fec        5 hours ago         190.6 MB
runoob/centos       dev                 860c279d2fec        5 hours ago         190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        22 hours ago        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago          188 MB
php                 5.6                 f40e9e0f10c8        10 days ago         444.8 MB
nginx               latest              6f8d099c3adc        13 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
ubuntu              15.10               4e3b13c8a266        5 weeks ago         136.3 MB
hello-world         latest              690ed74de00f        6 months ago        960 B
centos              6.7                 d95b5ca17cc3        6 months ago        190.6 MB
training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB

Docker 容器連接

前面我們實現了通過網絡端口來訪問運行在docker容器內的服務。下面我們來實現通過端口連接到一個docker容器

網絡端口映射

我們創建了一個 python 應用的容器。

runoob@runoob:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

另外,我們可以指定容器綁定的網絡地址,比如綁定 127.0.0.1。
我們使用 -P 參數創建一個容器,使用 docker ps 來看到端口5000綁定主機端口32768。

runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
fce072cc88ce        training/webapp     "python app.py"     4 minutes ago       Up 4 minutes        0.0.0.0:32768->5000/tcp   grave_hopper

我們也可以使用 -p 標識來指定容器端口綁定到主機端口。

兩種方式的區別是:

  • -P :是容器內部端口隨機映射到主機的高端口。
  • -p : 是容器內部端口綁定到指定的主機端口。
runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
33e4523d30aa        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp    berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     8 minutes ago        Up 8 minutes        0.0.0.0:32768->5000/tcp   grave_hopper

另外,我們可以指定容器綁定的網絡地址,比如綁定127.0.0.1。

runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES
95c6ceef88ca        training/webapp     "python app.py"     6 seconds ago       Up 6 seconds        5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     10 minutes ago      Up 10 minutes       0.0.0.0:32768->5000/tcp              grave_hopper

這樣我們就可以通過訪問127.0.0.1:5001來訪問容器的5000端口。
上面的例子中,默認都是綁定 tcp 端口,如果要綁定 UDP 端口,可以在端口后面加上 /udp。

runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES
6779686f06f6        training/webapp     "python app.py"     4 seconds ago       Up 2 seconds        5000/tcp, 127.0.0.1:5000->5000/udp   drunk_visvesvaraya
95c6ceef88ca        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     12 minutes ago      Up 12 minutes       0.0.0.0:32768->5000/tcp              grave_hopper

docker port 命令可以讓我們快捷地查看端口的綁定情況。

runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001

Docker容器連接

端口映射并不是唯一把 docker 連接到另一個容器的方法。
docker有一個連接系統允許將多個容器連接在一起,共享連接信息。
docker連接會創建一個父子關系,其中父容器可以看到子容器的信息。

容器命名

當我們創建一個容器的時候,docker會自動對它進行命名。另外,我們也可以使用--name標識來命名容器,例如:

runoob@runoob:~$  docker run -d -P --name runoob training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

我們可以使用 docker ps 命令來查看容器名稱。

runoob@runoob:~$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
43780a6eabaa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:32769->5000/tcp   runoob
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容