了解docker

  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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 13,575评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 5,784评论 0 7
  • Docker Engine -> User guide -> Network configuration -> D...
    zerolinke阅读 8,700评论 1 5
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,691评论 15 147
  • 今天去亳州开会要从早上7点到晚上11点虽然身体上会有些许疲惫却解放了思想可以整理下自己的思路放松下较长时间的紧张状...
    承谦阅读 897评论 0 0