引言
現已將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/version
和ls
分別查看當前系統的版本信息
和當前目錄下的文件列表
我們可以通過運行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