docker学习5:Docker 容器连接
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,参考:http://www.runoob.com/docker/docker-container-connection.html前面我们实现了通过网络端口来访问运行在docker容器内的服务。下面我们
千家信息网最后更新 2024年09月22日docker学习5:Docker 容器连接参考:http://www.runoob.com/docker/docker-container-connection.html
前面我们实现了通过网络端口来访问运行在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
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 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
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
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 ~]#
容器
端口
主机
网络
信息
命令
地址
标识
会创
例子
参数
可以通过
名称
多个
情况
方式
方法
时候
父子
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发之后位移
合力共创网络技术有限公司
网络安全国际博览会开幕式
牟平区管理系统软件开发企业
高德未发现u盘数据库
软件开发绩效考核方案
美领世家互联网科技严选
嵌入式软件开发培训合肥
小学生网络安全征文600
软件开发运维监督评价机制制度
列举数据库设计的步骤
联通网络安全培训
一度软件开发怎么样
csgo服务器社区
侍魂胧月传说哪个服务器
网络技术安全管理规范
vb连不上数据库
守护网络安全的图片
网络安全法自那时起正式实施
pdm连接数据库
北京软件开发公司排名彭军舰
无敌小说软件开发
温州电信服务器
达梦数据库用命令迁移
恒生互联网科技业etf
苹果软件开发平台
csgo服务器社区
计算机网络技术授课视频
大带宽台湾服务器
好用的jsp操作数据库控件