搞懂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ÿ

相关推荐

  1. [docker] 容器项目

    2024-05-13 16:12:04       94 阅读
  2. docker)-docker compose容器编排

    2024-05-13 16:12:04       54 阅读
  3. 了XML!

    2024-05-13 16:12:04       35 阅读
  4. Docker章 : Docker 容器端口映射

    2024-05-13 16:12:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 16:12:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 16:12:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 16:12:04       87 阅读
  4. Python语言-面向对象

    2024-05-13 16:12:04       96 阅读

热门阅读

  1. 动态NAT

    动态NAT

    2024-05-13 16:12:04      33 阅读
  2. 猜数字(c++语言)

    2024-05-13 16:12:04       31 阅读
  3. 为什么数据库字符编码不一致会导致索引失效

    2024-05-13 16:12:04       32 阅读
  4. 【Git LFS】Git管理大文件

    2024-05-13 16:12:04       33 阅读
  5. lustre文件系统详细介绍

    2024-05-13 16:12:04       30 阅读
  6. Python基础学习之datetime模块

    2024-05-13 16:12:04       34 阅读
  7. Electron Forge | 跨平台实战详解(中)

    2024-05-13 16:12:04       31 阅读
  8. Ubuntu 系统中设置中文输入法

    2024-05-13 16:12:04       30 阅读
  9. axios配置 responseType: “blob“

    2024-05-13 16:12:04       35 阅读