Docker 多容器复杂应用的部署

1.在某个文件中放入一个python flask项目,如flask-redis

2.在docker 控制台进入 flask-redis 目录中

3.由于需要redis,我们将redis单独作为一个容器,创建redis容器:docker run -d --name redis redis

4.将项目build成一个镜像:docker build -t [email protected]/flask-redis .(注意最后还有一个点,指代镜像的存放位置)

5.为了让redis直接能被用名字访问,在flask-redis中输入docker run -d -p 5000:5000 --link redis --name flask-redis 

-e REDIS_HOST=redis    [email protected]/flask-redis

注意这里的5000是Dockerfile中expose配置的端口号5000

6.测试:进入容器中测试:curl 127.0.0.1:5000 ---->打印hello container world!

             在主机上测试: curl 127.0.0.1:5000 ------->连接被拒绝

                                      curl 192.168.99.100:5000-------->成功打印(192.168.99.100是主机分配给docker机器的ip)

------------测试手动添加的-e环境变量是否加入到容器中--------------------

进入启动的项目容器flask-redis : docker exec -it flask-redis /bin/bash -

输入env  ,显示了REDIS_HOST=redis也包含在了其中

--------补充理解镜像和容器之间的区别----------

一个Docker镜像可以构建于另一个Docker镜像之上,这种层叠关系可以是多层的。第1层的镜像层我们称之为基础镜像(Base Image),其他层的镜像(除了最顶层)我们称之为父层镜像(Parent Image)。这些镜像继承了他们的父层镜像的所有属性和设置,并在Dockerfile中添加了自己的配置。


Docker镜像通过镜像ID进行识别

镜像可以发布为不同的版本,这种机制我们称之为标签(Tag),如何创建镜像:docker build Dockerfile

Docker容器可以使用命令创建:

它会在所有的镜像层之上增加一个可写层。这个可写层有运行在CPU上的进程,而且有两个不同的状态:运行态(Running)和退出态(Exited)。这就是Docker容器。

当我们有一个正在运行的Docker容器时,从运行态到停止态,我们对它所做的一切变更都会永久地写到容器的文件系统中。要切记,对容器的变更是写入到容器的文件系统的,而不是写入到Docker镜像中的。

--------------------显示容器中的环境变量等参数----------------------------

docker exec -it containerId /bin/sh

env

------------------------------------------------------------------

你可能感兴趣的:(Docker,玩转docker)