雲計算核心技術Docker教程:Compose使用

2021-01-10 金融界

來源:TechWeb.com.cn

Compose 是用於定義和運行多容器 Docker 應用程式的工具。通過 Compose,您可以使用 YML 文件來配置應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。

Compose 使用的三個步驟:

1.使用 Dockerfile 定義應用程式的環境。

2.使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起運行。

3.最後,執行 docker-compose up 命令來啟動並運行整個應用程式。

運行以下命令以下載 Docker Compose 的當前穩定版本:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

將可執行權限應用於二進位文件:

$ sudo chmod +x /usr/local/bin/docker-compose

創建軟鏈:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

測試是否安裝成功:

$ docker-compose version

cker-compose version 1.24.1, build 4667896b

使用示例:

創建一個測試目錄:命令如下

$ mkdir composetest

$ cd composetest

在測試目錄中創建一個名為 app.py 的文件,該文件redis 是應用程式網絡上的 redis 容器的主機名,該主機使用的埠為 6379。

在 composetest 目錄中創建另一個名為 requirements.txt 的文件,內容如下:

flask

redis

在 composetest 目錄中,創建一個名為的文件 Dockerfile,內容如下:

FROM python:3.7-alpine

WORKDIR /code

ENV FLASK_APP app.py

ENV FLASK_RUN_HOST 0.0.0.0

RUN apk add no-cache gcc musl-dev linux-headers

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

COPY . .

CMD ["flask", "run"]

Dockerfile 內容解釋:

FROM python:3.7-alpine: 從 Python 3.7 映像開始構建鏡像。

WORKDIR /code: 將工作目錄設置為 /code。

ENV FLASK_APP app.py

ENV FLASK_RUN_HOST 0.0.0.0

設置 flask 命令使用的環境變量。

RUN apk add no-cache gcc musl-dev linux-headers: 安裝 gcc,以便諸如 MarkupSafe 和 SQLAlchemy 之類的 Python 包可以編譯加速。

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

複製 requirements.txt 並安裝 Python 依賴項。

COPY . .: 將 . 項目中的當前目錄複製到 . 鏡像中的工作目錄。

CMD ["flask", "run"]: 容器提供默認的執行命令為:flask run。

在測試目錄中創建一個名為 docker-compose.yml 的文件,然後粘貼以下內容:

# yaml 配置

version: '3'

services:

web:

build: .

ports:

- "5000:5000"

redis:

image: "redis:alpine"

該 Compose 文件定義了兩個服務:web 和 redis。

web:該 web 服務使用從 Dockerfile 當前目錄中構建的鏡像。然後,它將容器和主機綁定到暴露的埠 5000。此示例服務使用 Flask Web 伺服器的默認埠 5000 。

redis:該 redis 服務使用 Docker Hub 的公共 Redis 映像。

在測試目錄中,執行以下命令來啟動應用程式:

# docker-compose up

如果你想在後臺執行該服務可以加上 -d 參數:

# docker-compose up -d

相關閱讀:

雲計算核心技術Docker教程: Dockerfile指令詳解

相關焦點

  • 雲計算核心技術Docker教程: Docker 容器連接
    下面我們來實現通過埠連接到一個 docker 容器。我們創建了一個 python 應用的容器。命令如下:# docker run -d -P training/webapp python app.py另外,我們可以指定容器綁定的網絡地址,比如綁定 127.0.0.1。
  • 雲計算核心技術Docker教程:Docker Compose的restart和rm命令詳解
    Docker-Compose restart命令可以重新啟動所有已停止並正在運行的服務,Docker-Compose rm命令可以刪除已經停止的容器,如果服務在運行,需要先docker-compose stop 停止容器。
  • 雲計算核心技術Docker教程:Docker Compose的pull和push命令詳解
    Docker-Compose pull命令可以拉取docker-compose.yml或者docker-stack.yml文件中定義的服務關聯的鏡像,Docker-Compose push命令可以將服務鏡像推送到registry/repository中。
  • 雲計算核心技術Docker教程:利用Dockerfile來創建鏡像
    在docker使用過程中,我們可以從已經創建的容器中更新鏡像,並且commit提交這個鏡像來創建新的鏡像,使用docker commit 來擴展一個鏡像比較簡單,但是不方便在一個團隊中分享此時我們可以使用 Dockerfile 指令來創建一個新的鏡像。
  • 雲計算核心技術Docker教程:docker構建緩存介紹
    如果根本不想使用緩存,則可以使用命令--no-cache=true 上的選項docker build。Docker遵循的基本規則概述如下:1.從已在緩存中的父鏡像開始,將下一條指令與從該基本鏡像派生的所有子鏡像進行比較,以查看是否其中一個是使用完全相同的指令構建的。如果不是,則高速緩存無效。2.在大多數情況下,只需將中的指令Dockerfile與子鏡像之一進行比較就足夠了。但是,某些說明需要更多的檢查和解釋。
  • 雲計算核心技術Docker教程:Dockerfile文件HEALTHCHECK命令詳解
    HEALTHCHECK語法格式:HEALTHCHECK [選項] CMD <命令>:設置檢查容器健康狀況的命令HEALTHCHECK NONE:如果基礎鏡像有健康檢查指令,使用這行可以屏蔽掉其健康檢查指令
  • Docker 容器 9 類 48 個常見故障的處理和使用規範 | 周末送資料
    Docker是一種相對使用較簡單的容器,我們可以通過以下幾種方式獲取信息:1、通過docker run執行命令,或許返回信息2、通過docker logs 去獲取日誌,做有針對性的篩選3、通過systemctl status docker查看docker服務狀態4、通過journalctl -u docker.service
  • 【最新版】Docker實戰總結
    kubernetes並不是為了docker寫的,kubernetes把集群帶到了一個全新的高度,代價是學習曲線比較陡。docker-swarm 使用了一個不同的方式,它是docker原生的集群工具。
  • Docker v1.13.0 正式版發布,應用容器引擎
    在升級到 Docker 1.13 之前,必須卸載使用 Docker 1.12 安裝的插件。可通過 docker plugin rm 命令卸載插件。Top 10 新增功能正式支持服務棧: docker stack正式支持插件:docker plugin添加在 Swarm 集群環境下對密碼、密鑰管理的 secret 管理服務:docker secret增加 docker system 命令
  • 將Docker與pipeline一起使用
    Jenkinsfile(聲明性管道)pipeline { agent { docker { image 'maven:3-alpine' args '-v $HOME/.m2:/root/.m2' } } stages { stage('Build') { steps { sh 'mvn -B' } } }}切換腳本管道 (高級)使用多個容器代碼庫依賴於多種不同的技術變得越來越普遍
  • 雲計算有哪些類型_雲計算的三大核心技術
    雲計算有哪些類型_雲計算的三大核心技術 網絡整理 發表於 2020-04-24 10:32:03   雲計算有哪些類型   網際網路時代的快速發展,
  • Docker是什麼?有什麼用途?及理論知識詳細說明
    運維生成環境中:docker化。 發布服務不用擔心伺服器的運行環境,所有的伺服器都是自動分配docker,自動部署,自動安裝,自動運行 再不用擔心其他服務引擎的磁碟問題,cpu問題,系統問題了 資源利用更出色 自動遷移,可以製作鏡像,遷移使用自定義的鏡像即可遷移,不會出現什麼問題 管理更加方便了 為什麼docker越來越受歡迎 容器化越來越受歡迎
  • CoreOS實踐指南(七):Docker容器管理服務
    這篇文章裡不會對Docker做很深入的講解,而重點放在開始使用Docker所需的基本知識以及在CoreOS中使用Docker託管服務的推薦實踐方法。 結緣雷教主說,「站在風口上,豬也能飛起來」。Docker正是借著雲計算的風飛上了天。
  • 使用Jenkins、Docker 構建部署 Serverless 應用
    定製構建環境的 docker 鏡像 本文使用 Serverless Framework 部署應用到騰訊雲。 應用構建部署是在 docker 容器中運行的,所以需要一個同時安裝有 nodejs 和 python 的 docker 鏡像。 在 GitHub 上找到了 docker-python-nodejs 倉庫:https://github.com/nikolaik/docker-python-nodejs。
  • 使用Gitea+Drone來搭建自己的輕量級CI/CD自動構建平臺
    廢話少說,直接開搞~ 這裡我的伺服器環境使用的是最新的CentOS7 x64系統,只安裝了一個docker1 安裝GiteaGitea的安裝過程詳見:https://ffis.me/experience/1960.html這裡就不做過多的闡述了2 安裝Drone新版的Drone可以直接使用OAuto2和drone進行通信,無縫集成,配置完成後只需要得到
  • 吳軍《數學之美》,什麼是雲計算?雲計算的數學基礎和核心技術
    雲計算技術涉及的面很廣,從存儲、計算、資源的調度到權限的管理等,雲計算的關鍵之一,是如何把一個非常複雜的計算問題,通過雲端分配到許多雲端連接的計算機上,實現協同作業。那麼,「雲計算」究竟是怎麼一回事?它的數學基礎是什麼?核心作用又是什麼呢?01什麼是雲計算?
  • 史上最全SpaceX火箭數據開源,核心、組員艙、起落架、發射信息全都有!
    可以在你的能力範圍之內隨意使用,當然,版權歸屬於SpaceX。REST API數據格式支持json,並且提供多種語言接口,比如C#、Python、PHP、Objective-C等格式。例如,針對歷史活動信息的查詢步驟如下:1、查詢信息連結,可選用Postman查看API信息。
  • 雲計算的基本原理是什麼,具體的核心技術有哪些?
    雲計算是一種資源交付和使用模式,指通過網絡獲得應用所需的資源(硬體、軟體、平臺)。雲計算將計算從客戶終端集中到「雲端」,作為應用通過網際網路提供給用戶,計算通過分布式計算等技術由多臺計算機共同完成。用戶只關心應用的功能,而不關心應用的實現方式,應用的實現和維護由其提供商完成,用戶根據自己的需要選擇相應的應用。雲計算不是一個工具、平臺或者架構,而是一種計算的方式。
  • Docker & Singularity
    自從微軟更新了WSL2(雖然我一直在用WSL),但是發現docker只能在WSL2下使用,又是被需求更新。於是上網查了下window 家庭版的更新方法。打個補丁就好(可以參考該連結https://www.jianshu.com/p/a20c2d58eaac)。