内容简介:三个容器我们需要让
场景
三个容器
-
digger-app
: 启动 API 服务,依赖redis
和mysql
-
digger-redis
:redis
服务 -
digger-mysql
:mysql
服务
我们需要让 digger-app
容器内运行的服务能够访问 digger-redis
和 digger-mysql
容器。
方法一: --link
--link
的格式为 --link name:alias
, name
为需要连接到的容器的 name
, alias
是给这个连接取个别名。
首先启动 redis
服务和 mysql
服务:
# redis docker run --name digger-redis -d redis:5.0.3-alpine # mysql docker run --name digger-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.25
如果不指定 name
,docker 会随机生成一个 name,使用 docker ps 可以查看到运行容器的 name。
在启动 digger-app
时,指定 --link
参数:
docker run --name digger-api --link digger-redis:redis --link digger-mysql:mysql -d -p 3000:3000 your-image
这样在 digger-api
中就能通过 连接名
访问到对应的服务了,如与 digger-redis
的 link
别名为 redis
,那么在 digger-api
代码中,可以指定 redis
的 host
为 redis
,以 node.js
举例:
// redis.js const redis = require('redis'); const client = redis.createClient({ host: 'redis', port: 6379 }); // mysql.js const mysql = require('mysql'); const connection = mysql.createConnection({ host : 'mysql', user : 'root', password : 'root', database : 'my_db' }); connection.connect();
使用 docker exec
命令进入容器,使用 ping
命令也可以查看容器是否互联成功:
事实上,在 digger-api
容器内,如果查看 hosts
文件,可以发现 docker 已经将另外两个容器配置在了 hosts
中:
/app # cat /etc/hosts 127.0.0.1 localhost ... 172.17.0.6 redis 7a6409598773 cache-redis 172.17.0.5 mysql f08bf0e0bf18 digger-mysql 172.17.0.7 6eb8dab1e6db
方法二: --network
随着 Docker 网络的完善,更建议将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 --link
参数。
使用 --network
命令可以指定容器运行的网络,通过将多个容器指定到同一个网络可以让容器间相互访问。
创建网络
docker network create -d bridge my-net
指定网络
# redis docker run --name digger-redis -d --network my-net redis:5.0.3-alpine # mysql docker run --name digger-mysql -e MYSQL_ROOT_PASSWORD=root -d --network my-net mysql:5.7.25 # api docker run --name digger-api --network my-net -d -p 3000:3000 your-image
不过需要注意这时候就没有连接的别名了,在容器里面, host
直接使用对方容器的 name
访问即可。
方法三: docker compose
Docker Compose
是 Docker
官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
新建 docker-compose.yml
文件,编写如下
version: "3" services: digger-api: image: "express:v1" ports: - "3000:3000" digger-mysql: image: "mysql:5.7.25" environment: - MYSQL_ROOT_PASSWORD=root digger-redis: image: "redis:5.0.3-alpine"
docker compose
的官方文档查看 这里 。
然后使用 docker-compose up -d
启动即可,容器会在后台运行。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Windows与Linux文件系统互访的几种方法
- 容器技术之容器镜像篇
- 多线程六 同步容器&并发容器
- 容器技术第一讲:容器入门篇
- Docker容器Centos容器安装openssh
- 房多多容器化和容器云实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Is Parallel Programming Hard, And, If So, What Can You Do About
Paul E. McKenney
The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the pa......一起来看看 《Is Parallel Programming Hard, And, If So, What Can You Do About 》 这本书的介绍吧!