摘要:首先啟動服務和服務如果不指定,會隨機生成一個,使用可以查看到運行容器的。新建文件,編寫如下的官方文檔查看這里。
場景
三個容器
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 composeDocker 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 啟動即可,容器會在后臺運行。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28074.html
摘要:前言我們一起回顧上一篇文章平臺的微服務架構和,一共通過構建了三個鏡像數據庫,部署前端頁面的,和接口。最近阿里云產品春節大促銷,我一時沒忍住又買了一臺服務器,打完折扣還是很貴。是一個非常穩定的,可移植的網絡文件系統。 前言 我們一起回顧上一篇文章《Bees平臺的微服務架構(1)docker和docker-compose》,一共通過Dockerfile構建了三個docker鏡像:mysql...
摘要:在上海研究院的同事們如果想參加這個內部培訓,可以聯系同事。第三行命名執行命令,生成新的鏡像文件。說句題外話雖然今年月份被微軟收購了,但是用戶體驗一點也沒變,一如既往的優秀。關于更多另類用法,請參閱的文章寫在被微軟收購之際的那些另類用法。 2018年只剩最后30天了。Jerry在2017年的最后一天,曾經立下一個目標:這個微信公眾號在2018年保證至少每周發布一篇SAP原創技術文章。 從...
摘要:在上海研究院的同事們如果想參加這個內部培訓,可以聯系同事。第三行命名執行命令,生成新的鏡像文件。說句題外話雖然今年月份被微軟收購了,但是用戶體驗一點也沒變,一如既往的優秀。關于更多另類用法,請參閱的文章寫在被微軟收購之際的那些另類用法。 2018年只剩最后30天了。Jerry在2017年的最后一天,曾經立下一個目標:這個微信公眾號在2018年保證至少每周發布一篇SAP原創技術文章。 從...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第五篇。因此,本系列教程關鍵的第五章用來討論可能面臨的安全問題以及它們是如何影響到整體的安全性的。一些必要的安全措施包括使用非特權用戶運行容器。本圖中列舉了幾個用于維護和授權的安全性。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第五篇 Part 5: Docker Security。該系列所...
閱讀 2064·2023-04-25 22:58
閱讀 1408·2021-09-22 15:20
閱讀 2694·2019-08-30 15:56
閱讀 1987·2019-08-30 15:54
閱讀 2101·2019-08-29 12:31
閱讀 2728·2019-08-26 13:37
閱讀 592·2019-08-26 13:25
閱讀 2098·2019-08-26 11:58