Docker作为微服务架构使用的工具,初步用来,确实非常的不错。
Docker把使用环境整个打包起来,然后独立的运行,实行了运行环境的隔离,并且停用、恢复非常的方便。
我之前的时候在Linux上写了一个提供网络服务的脚本,之前是在Linux上使用让脚本常驻来做的:(python ./myserver.py &)。停用恢复不是特别的方便,需要kill -9 来停用。
了解Docker之后就拿这个来练手做Docker的第一个“微服务”了。

1. 环境搭建

Centos下的环境搭建比较简单,特别对于使用国外服务器的情况,链接国外的资源速度会很快。

// 安装一些组件
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
// 安装docker
sudo yum -y install docker
// 启动Docker服务
sudo systemctl start docker
// 运行docker中的helloworld测试程序 
sudo docker run hello-world

正常运行这些之后,就可以进行下一步,脚本做成微服务。
可以执行下面命令看已有的镜像
sudo docker images

2. 把脚本做成“微服务”

a. 创建image

在脚本所在目录中,添加一个Dockerfile的文件
在Dockerfile中添加内容

FROM python:2
ADD myserver.py /
ADD config.py /
CMD [ "python", "./myserver.py" ]

FROM中说明使用的base image
ADD中指明要添加的文件
RUN中image中包含的动态内容的创建语句
CMD中指明image运行语句

然后在当前目录中执行创建image的命令:

sudo docker build -t myserver .

b. 运行image

下一步把上面创建好的image运行起来,因为该image提供网络服务,实际上是监听了一个tcp端口的,对于docker来说,如果要暴露端口给外部的话,需要映射该端口,方式是 -p docker内部端口:外部端口。

所以对于运行命令中需要加入端口的映射,如下:

[host@~/my_new_docker_build]$sudo docker run -d -p 3030:3030 myserver
e066d2c312000c3e83fb3bd83cd5d210f9e31d06db8e7874b03a257d9e76af63

这样docker就运行好了,可以和以前一样对外提供服务了。可以使用
netstat -an 来查看监听端口的情况。

另外docker中通过下面的语句查看docker相关的状态:

查看日志:
sudo docker logs

查看进程:
sudo docker ps

查看images:
sudo docker images

查看端口:
sudo docker sock

3. 一些其它命令

启停container:
sudo docker stop/start/restart

去除container:
sudo docker rm 0cdb26f95085
删除所有已停止的
delete all stopped containers with docker rm $(docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)

去除image:
sudo docker rmi c078d6434ea9
删除所有image:
delete all images with docker rmi $(docker images -q)
sudo docker rmi $(docker images -q)