了解docker

2017-10-13  本文已影响0人  hi小羊
  1. 容器简单介绍
    映像是一个轻量级的/独立的/可执行的包,它包含软件运行所需要的一切,包括代码,runtime,库,环境变量和配置文件等。
    容器是一个运行的映像的实例,与宿主机隔离,在进行配置的情况下,访问主机的文件,端口。
    容器运行本地应用程序的主机的内核。与虚拟机相比,它们具有更好的性能特征,虚拟机只能通过虚拟机管理程序对主机资源进行虚拟访问。容器可以获得本机访问,每一个都在一个进程中运行,比其他可执行文件占内存少。
  2. dockerfile
    使用dockerfile定义容器运行所需的一切,容器内的环境与主机的环境是隔离的,所以需要将内部端口映射到外部,实现对容器内应用的访问。
    例:
#use default official python runtime
FROM python

#set proxy
ENV http_proxy http://myproxy:8080
ENV https_proxy https://myproxy:8080

#set working directory
WORKDIR /app

#copy file that needed to run the container
ADD . /app

#install required moudule
RUN pip install redis

#run an app when container runs
CMD ["python", "app.py"] 

在当前目录下,确保app.py, Dockerfile存在,然后构建名为test的映像,设置版本为1

docker build -t local/test:1 .

最后运行app

docker run -p hostPort:containerPort test

在我们终止该命令时,容器也相应被停止,使用detached模式使容器保持运行

docker run -d -p hostPort:containerPort --name=test local/test:1
  1. 容器之间的通信
    当安装了docker以后,自动创建3个网络。
docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
b748881b7bba        bridge              bridge              local
dc63fe79701a        host                host                local
c31094e7948a        none                null                local

可以看到docker创建的桥接网络,如果创建容器的时候不指定不同的网络的话,那么新创建的容器默认连接到桥接网络

docker network inspect bridge

链接到默认桥接网络的容器可以通过彼此的ip地址来相互通信,docker不支持自动服务发现,如果想要使用容器的名字实现容器之间的通信,则需要使用用户定义的网络模式,当然一种不推荐的做法是使用docker run --link containerToBeConnected

上一篇 下一篇

猜你喜欢

热点阅读