搞懂Docker(八)- 多容器app

在这里插入图片描述

获取示例程序

  1. 示例程序
    或者
    示例程序
    获取示例程序
  2. 程序结构如下
├── getting-started-app/
│ ├── package.json
│ ├── README.md
│ ├── spec/
│ ├── src/
│ └── yarn.lock

多容器app

到目前为止,我们学的都是只包含一个容器的程序。但是现在,我们需要向程序栈中添加MySQL。由此引出了下面的问题:“我们计划把MySQL放到哪里运行?在当前的容器还是在一个新的容器?”。一般情况下,每个容器应该负责完成一件事,会完成的更好。下面我列举了在单独的容器中运行程序的优势:

  • 很多情况下,我们对接口和前端的修改多于数据库。
  • 独立的容器可以方便我们对程序各个部分的版本管理。
  • 你开发时用的本地数据库系统,当要部署到生产环境中时,想要换一个第三方服务的数据库系统。你肯定不希望把程序连带着数据库一起发布。
  • 运行多个进程需要有一个进程管理器,运行的进程越多会增加容器的启动的负担。
    还有很多的优势证明单独容器运行单独的进程的好处。
    在这里插入图片描述

容器的网络

请记住,默认情况下,容器在隔离的环境下运行,它不知道同一个宿主机上的任何其它进程或者容器的存在。所以,我们如何使一个容器可以和另外一个容器通讯呢?答案就是网络。如果你把他们放到同一个网络中,它们就可以相互通信。

启动MySQL

有2种方式把容器放到一个网络中:

  • 启动容器时设置网络
  • 连接一个运行中的程序到一个网络
    下面,我们先创建一个网络,然后在容器启动时,附加到这个网络。
  1. 创建网络
$ docker network create todo-app
  1. 启动MySQL,然后把它附加到网络。你还要定义一些环境变量供数据库使用初始化。要了解更多的MySQL环境变量,参考 MySQL Docker Hub listing中的"Environment Variables"部分。
docker run -d \
    --network todo-app --network-alias mysql \
    -v todo-mysql-data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=secret \
    -e MYSQL_DATABASE=todos \
    mysql:8.0

上面的命令里,出现了--network-alias,后面,我们会介绍关于它更多的内容。

说明
我们注意到上面的命令里,有一个名字为todo-mysql-data的volumeÿ

  • 41
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值