首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Docker快速入门之一个小Demo

java

目标:

运行docker容器,从容器外访问docker内的应用程序

步骤:

1、安装docker

2、使用docker镜像创建容器:

docker run --name test1 -it --rm -p 127.0.0.1:5010:5011 centos:latest bash

docker run:创建容器

--name test1:容器名称是test1

-it:命令窗口交互。-i 则让容器的标准输入保持打开;-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

JAVA

--rm:容器关闭后就删除容器并删除容器挂载的数据卷

-p 127.0.0.1:5010:5011:把容器的5011端口映射到宿主机的ip和端口127.0.0.1:5010上

centos:latest:创建容器使用的镜像是最新版本的centos(如果本地没有该镜像,docker会自动从仓库拉取)

bash:启动容器后,在容器内启动一个 bash 终端,允许用户进行交互

3、在本地写一个python socket 监听脚本 socket-listen.py:

注意,由于在映射ip的时候并没有指定容器ip,容器中的python应用监听的ip应该是0.0.0.0,而不是127.0.0.1(127.0.0.1 是一个环回地址,并不表示“本机”;0.0.0.0才是真正表示“本网络中的本机” )

#coding=utf-8 import socketimport threading, time# 可以使用telnet ip port 来与此python socket通信(因为telnet是应用层的,而socket是传输层的)print "hello, world"def tcplink(sock, addr):print 'Accept new connection from %s:%s...' % addrsock.send('Welcome!')while True:data = sock.recv(1024)time.sleep(1)if data == 'exit' or not data:breaksock.send('Hello, %s!' % data)sock.close()print 'Connection from %s:%s closed.' % addr#创建一个基于IPv4和TCP协议的Sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#监听端口s.bind(('0.0.0.0', 5011))#调用listen()方法开始监听端口,传入的参数指定等待连接的最大数量s.listen(5)print 'Waiting for connection...'while True:# 接受一个新连接:sock, addr = s.accept()# 创建新线程来处理TCP连接:t = threading.Thread(target=tcplink, args=(sock, addr))t.start()

JAVA

java

4、把socket-listen.py 从宿主机cp到容器中:

docker cp ~/Desktop/socket-listen.py test1:/

~/Desktop/socket-listen.py:宿主机中python文件路径

test1:/:拷贝到名称为test1的容器的/路径下

5、让docker监听容器的5011端口,通过端口映射,也就是监听宿主机的127.0.0.1:5010:

centos自带python,在容器中直接执行python代码:

python socket-listen.py

6、在宿主机使用telnet测试是否能访问容器中的python应用:

telnet 127.0.0.1 5010

在宿主机可以看到:

doing@doings-MacBook-Air:/usr/local/bin$ telnet 127.0.0.1 5010Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.Welcome!

在容器中可以看到:

[root@e6d506e5b5eb /]# python socket-listen.pyhello, worldWaiting for connection...Accept new connection from 127.0.0.1:46804...

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180114A0H2OE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券