docker學習5:Docker 容器連線
參考:
前面我們實現了透過網路埠來訪問執行在docker容器內的服務。下面我們來實現透過埠連線到一個docker容器
網路埠對映
我們建立了一個 python 應用的容器。
[root@huixuan ~]# docker run -d -P training/webapp python app.py
eda68d54e9976f0894461dc61b35fb1ebc607ae19954bb76fd68a316ece6027d
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 3a42651974ec 7 minutes ago 199 MB
tonykorn97/centos dev 3a42651974ec 7 minutes ago 199 MB
tonykorn97/ubuntu v2 6bb0f7a6d1e6 34 minutes ago 137 MB
<none> <none> 3248dea71f18 36 minutes ago 137 MB
docker.io/ubuntu 14.04 8cef1fa16c77 3 days ago 223 MB
docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB
docker.io/centos <none> e934aafc2206 3 weeks ago 199 MB
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
另外,我們可以指定容器繫結的網路地址,比如繫結 127.0.0.1。
我們使用 -P 引數建立一個容器,使用 docker ps 來看到埠1026繫結主機埠5000。
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda68d54e997 training/webapp "python app.py" 3 minutes ago Up 2 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
0e044f323370 training/webapp "python app.py" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp admiring_goldwasser
[root@huixuan ~]#
我們也可以使用 -p 標識來指定容器埠繫結到主機埠。
兩種方式的區別是:
-P :是容器內部埠隨機對映到主機的高階口。
-p : 是容器內部埠繫結到指定的主機埠。
[root@huixuan ~]# docker run -d -p 5000:5000 training/webapp python app.py
56af280bb2b399399a9a40a5fa52ac0d7e787cca7ac2446ccbbb3faecccde935
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint laughing_heisenberg (b3ee694cd9c6bb3f7c8d7129aca3bf99b5eabc023daab0d08a5e78358d23b08e): Bind for 0.0.0.0:5000 failed: port is already allocated.
[root@huixuan ~]# docker stop 0e044f323370
0e044f323370
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda68d54e997 training/webapp "python app.py" 5 minutes ago Up 5 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]# docker run -d -p 5000:5000 training/webapp python app.py
fcced8f54a68432cb652a7b755047160869ff9110cd6ec2b850f14a666a72b28
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcced8f54a68 training/webapp "python app.py" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 5 minutes ago Up 5 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]#
另外,我們可以指定容器繫結的網路地址,比如繫結127.0.0.1。
[root@huixuan ~]# docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
eda9d7e0083933213dff616a38e39975c89783f018ae9554c87493cc2028e247
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda9d7e00839 training/webapp "python app.py" 3 seconds ago Up 2 seconds 127.0.0.1:5001->5000/tcp mystifying_haibt
fcced8f54a68 training/webapp "python app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 6 minutes ago Up 6 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]#
這樣我們就可以透過訪問127.0.0.1:5001來訪問容器的5000埠。
上面的例子中,預設都是繫結 tcp 埠,如果要繫結 UDP 埠,可以在埠後面加上 /udp。
[root@huixuan ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
2eaa281d655cf95a2df079b8488e0e5cc64850e610ad522ba14a0e2ba9ca2e02
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2eaa281d655c training/webapp "python app.py" 2 seconds ago Up 1 second 5000/tcp, 127.0.0.1:5000->5000/udp nifty_swirles
eda9d7e00839 training/webapp "python app.py" About a minute ago Up About a minute 127.0.0.1:5001->5000/tcp mystifying_haibt
fcced8f54a68 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 8 minutes ago Up 8 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]#
docker port 命令可以讓我們快捷地檢視埠的繫結情況。
[root@huixuan ~]# docker port 2eaa281d655c
5000/udp -> 127.0.0.1:5000
[root@huixuan ~]# docker port eda9d7e00839
5000/tcp -> 127.0.0.1:5001
[root@huixuan ~]#
Docker容器連線
埠對映並不是唯一把 docker 連線到另一個容器的方法。
docker有一個連線系統允許將多個容器連線在一起,共享連線資訊。
docker連線會建立一個父子關係,其中父容器可以看到子容器的資訊。
容器命名
當我們建立一個容器的時候,docker會自動對它進行命名。另外,我們也可以使用--name標識來命名容器,例如:
先把之前的停止掉:
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcced8f54a68 training/webapp "python app.py" 29 minutes ago Up 29 minutes 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 35 minutes ago Up 35 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]# docker stop fcced8f54a68
fcced8f54a68
[root@huixuan ~]# docker stop eda68d54e997
eda68d54e997
[root@huixuan ~]#
[root@huixuan ~]# docker run -d -P --name tonykorn97 training/webapp python app.py
c793b0a10ab17912d4b7138bd58f201dcc7479b27840426a79d3e3d921af7d6e
我們可以使用 docker ps 命令來檢視容器名稱。
[root@huixuan ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c793b0a10ab1 training/webapp "python app.py" 7 seconds ago Up 6 seconds 0.0.0.0:1027->5000/tcp tonykorn97
[root@huixuan ~]#
前面我們實現了透過網路埠來訪問執行在docker容器內的服務。下面我們來實現透過埠連線到一個docker容器
網路埠對映
我們建立了一個 python 應用的容器。
[root@huixuan ~]# docker run -d -P training/webapp python app.py
eda68d54e9976f0894461dc61b35fb1ebc607ae19954bb76fd68a316ece6027d
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 3a42651974ec 7 minutes ago 199 MB
tonykorn97/centos dev 3a42651974ec 7 minutes ago 199 MB
tonykorn97/ubuntu v2 6bb0f7a6d1e6 34 minutes ago 137 MB
<none> <none> 3248dea71f18 36 minutes ago 137 MB
docker.io/ubuntu 14.04 8cef1fa16c77 3 days ago 223 MB
docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB
docker.io/centos <none> e934aafc2206 3 weeks ago 199 MB
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
另外,我們可以指定容器繫結的網路地址,比如繫結 127.0.0.1。
我們使用 -P 引數建立一個容器,使用 docker ps 來看到埠1026繫結主機埠5000。
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda68d54e997 training/webapp "python app.py" 3 minutes ago Up 2 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
0e044f323370 training/webapp "python app.py" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp admiring_goldwasser
[root@huixuan ~]#
我們也可以使用 -p 標識來指定容器埠繫結到主機埠。
兩種方式的區別是:
-P :是容器內部埠隨機對映到主機的高階口。
-p : 是容器內部埠繫結到指定的主機埠。
[root@huixuan ~]# docker run -d -p 5000:5000 training/webapp python app.py
56af280bb2b399399a9a40a5fa52ac0d7e787cca7ac2446ccbbb3faecccde935
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint laughing_heisenberg (b3ee694cd9c6bb3f7c8d7129aca3bf99b5eabc023daab0d08a5e78358d23b08e): Bind for 0.0.0.0:5000 failed: port is already allocated.
[root@huixuan ~]# docker stop 0e044f323370
0e044f323370
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda68d54e997 training/webapp "python app.py" 5 minutes ago Up 5 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]# docker run -d -p 5000:5000 training/webapp python app.py
fcced8f54a68432cb652a7b755047160869ff9110cd6ec2b850f14a666a72b28
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcced8f54a68 training/webapp "python app.py" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 5 minutes ago Up 5 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]#
另外,我們可以指定容器繫結的網路地址,比如繫結127.0.0.1。
[root@huixuan ~]# docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
eda9d7e0083933213dff616a38e39975c89783f018ae9554c87493cc2028e247
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eda9d7e00839 training/webapp "python app.py" 3 seconds ago Up 2 seconds 127.0.0.1:5001->5000/tcp mystifying_haibt
fcced8f54a68 training/webapp "python app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 6 minutes ago Up 6 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]#
這樣我們就可以透過訪問127.0.0.1:5001來訪問容器的5000埠。
上面的例子中,預設都是繫結 tcp 埠,如果要繫結 UDP 埠,可以在埠後面加上 /udp。
[root@huixuan ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
2eaa281d655cf95a2df079b8488e0e5cc64850e610ad522ba14a0e2ba9ca2e02
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2eaa281d655c training/webapp "python app.py" 2 seconds ago Up 1 second 5000/tcp, 127.0.0.1:5000->5000/udp nifty_swirles
eda9d7e00839 training/webapp "python app.py" About a minute ago Up About a minute 127.0.0.1:5001->5000/tcp mystifying_haibt
fcced8f54a68 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 8 minutes ago Up 8 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]#
docker port 命令可以讓我們快捷地檢視埠的繫結情況。
[root@huixuan ~]# docker port 2eaa281d655c
5000/udp -> 127.0.0.1:5000
[root@huixuan ~]# docker port eda9d7e00839
5000/tcp -> 127.0.0.1:5001
[root@huixuan ~]#
Docker容器連線
埠對映並不是唯一把 docker 連線到另一個容器的方法。
docker有一個連線系統允許將多個容器連線在一起,共享連線資訊。
docker連線會建立一個父子關係,其中父容器可以看到子容器的資訊。
容器命名
當我們建立一個容器的時候,docker會自動對它進行命名。另外,我們也可以使用--name標識來命名容器,例如:
先把之前的停止掉:
[root@huixuan ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcced8f54a68 training/webapp "python app.py" 29 minutes ago Up 29 minutes 0.0.0.0:5000->5000/tcp kickass_pare
eda68d54e997 training/webapp "python app.py" 35 minutes ago Up 35 minutes 0.0.0.0:1026->5000/tcp blissful_goldstine
[root@huixuan ~]# docker stop fcced8f54a68
fcced8f54a68
[root@huixuan ~]# docker stop eda68d54e997
eda68d54e997
[root@huixuan ~]#
[root@huixuan ~]# docker run -d -P --name tonykorn97 training/webapp python app.py
c793b0a10ab17912d4b7138bd58f201dcc7479b27840426a79d3e3d921af7d6e
我們可以使用 docker ps 命令來檢視容器名稱。
[root@huixuan ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c793b0a10ab1 training/webapp "python app.py" 7 seconds ago Up 6 seconds 0.0.0.0:1027->5000/tcp tonykorn97
[root@huixuan ~]#
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-2153592/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker phpmyadmin 連線mysql容器DockerPHPMySql
- Docker 容器學習Docker
- docker學習3:Docker容器使用Docker
- Docker容器的網路連線Docker
- Docker學習(十)Docker容器編排 Docker-composDocker
- 【Docker】資料卷及容器連線Docker
- [Docker 系列]docker 學習六,資料卷容器Docker
- [Docker 系列]docker 學習 五,容器資料卷Docker
- [第十篇]——Docker 容器連線Docker
- Docker的容器使用與連線-WindowDocker
- 5、docker容器清理Docker
- Docker容器學習與分享12Docker
- Docker & ASP.NET Core (4):容器間的連線DockerASP.NET
- Docker學習之搭建MySql容器服務DockerMySql
- 容器Docker學習系列五~命令學習history,save, importDockerImport
- 容器Docker學習系列五~命令學習history,save,importDockerImport
- Docker學習筆記:映象、容器、資料卷Docker筆記
- 【Docker 系列】docker 學習 三Docker
- [Docker 系列]docker 學習 三Docker
- Docker & ASP.NET Core (1):把程式碼連線到容器DockerASP.NET
- [Docker 系列]docker 學習八,Docker 網路Docker
- Docker容器Docker
- docker 學習Docker
- docker學習Docker
- docker學習筆記-為容器配置重啟策略Docker筆記
- Docker構建自己的容器(學習筆記二)Docker筆記
- docker學習系列2儲存對容器的修改Docker
- Docker 學習筆記(第三集:容器)Docker筆記
- docker學習4:Docker 映象使用Docker
- docker學習3:Docker Hello WorldDocker
- docker學習6:在Centos7 更改Docker預設映象和容器的位置DockerCentOS
- vscode連線遠端伺服器docker容器進行開發VSCode伺服器Docker
- 雲端計算學習路線圖課件:學Docker容器怎樣快速入門?Docker
- 【Docker】(9)---每天5分鐘玩轉 Docker 容器技術之映象Docker
- docker學習6:Docker 安裝 NginxDockerNginx
- docker學習1:CentOS Docker 安裝DockerCentOS
- docker學習7:Docker 安裝 PHPDockerPHP
- 【Docker】動手寫Dockerfile學習DockerDocker