Dockerfile 和 docker-compose.yml的区别(转载)

1. 明确概念

  Dockerfile是用来构建自定义镜像的,并没有直接生成容器。只是可以在运行镜像时运行容器而已。
  docker-compose.yml 文件可以做容器编排进行环境部署,里面可以用 Dockerfile, 但仅限于单节点,即本机部署 。docker-compose.yml需要通过docker-compose组件实现功能。
  Kubernetes多节点管理Docker的,当容器状态不正常它能重新帮我们启动新容器。虽然Docker Swarm也是多节点管理,但基本已弃用,了解一下就好了。

2. 总结

  Dockerfile是用来构建镜像的,若是想使用这个镜像的话还需要使用docker run命令来运行这个镜像,从而生成运行一个容器
  docker-compose.yml是用来编排项目的,里面包含使用各种镜像创建的容器服务,使用的镜像可以是网络上的,也可以是根据使用Dockerfile文件来生成的镜像,相当于是把上一步的这个工作给做了

  docker-compose.yml使用的镜像可以是网络上的,具体是这样的,优先使用本地存在的镜像,本地没有的话才会从 Docker Hub网站上下载,若想直接使用私有仓库镜像,则需要事先从私有仓库镜像给拉取到本地才行

3. Dockerfile

  把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,这个脚本就是 Dockerfile。

Dockerfile 部分指令:

3.1. Dockerfile 文件示例

4. Docker-compose

  docker-compose 是官方开源项目,负责实现对 Docker 容器集群的快速编排,部署分布式应用。通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

4.1. 安装docker-compose

  mac 和 win 下已经默认装好了。而 linux 下得手动安装。这里采用二进制包的方式

4.2. 一般使用步骤

  1. 创建一个空目录。
  2. 定义 Dockerfile,方便迁移到任何地方
  3. 编写 docker-compose.yml 文件
  4. 运行 docker-compose up 启动服务

4.3. docker-compose 使用举例

  下面我们用 Python 来建立一个能够记录页面访问次数的 web 网站。

  1. 建一个空目录:mkdir -p /data/test
  2. 在该空文件下建立 app.py,输入以下内容:

  1. 编写 Dockerfile 文件:

  1. 编写 docker-compose.yml 文件

$emsp;$emsp;此时该空目录下共有:app.py、Dockerfile、docker-compose.yml 文件

  1. 执行 docker-compose 项目

4.4. yml 模板文件的说明:

  每个 service 代表一个 container,container 可以通过 dockerhub的 image 来创建,也可以从本地的 Dockerfile build 出来的镜像来创建。
  某个服务需要用到 Dockerfile build 出来的镜像,则在 docker-compose 里面指明 build 的文本位置和文件名。
  yml 文件可以指定 volume 和 network
如下,是一个使用了 network 和 volumes 参数的例子(放在与 service 同层的关系):

  网络和卷的定义类似于 docker network create 和 docker volume create。如果你没有指定连接network,那么才会使用 link。


转载原文

赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注