日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker-compose 安装与基本使用(四)

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker-compose 安装与基本使用(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝 Docker-Compose

Compose有多種安裝方式,例如通過 shell, pip以及將 Compose作為容器安裝等。本次安裝以Shell 為主。

  • 通過以下命令自動下載并安裝適應系統版本的 Compose:
  • curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 為安裝腳本添加執行權限
  • chmod +x/usr/local/bin/docker-compose

    這樣, Compose就安裝完成了。
    可使用以下命令測試安裝結果:

    docker-compose --version

    可輸出類似于如下的內容:4 586bhjnkmv

    docker-compose version 1.10.0, build 4bd6f1a

    說明 Compose已成功安裝。

    安裝 Compose命令補全工具

    現在已成功安裝 Compose,然而當輸 Docker Compose并按下Tab鍵時, Compose并沒有補全命令。要想使用 Compose的命令補全,需要安裝命令補全工具。
    命令補全工具在Bash和zsh下的安裝方式不同,本次以Bash安裝為主。
    執行以下命令,即可安裝命令補全工具:

    curl -l https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

    這樣,在重新登錄后,輸入 docker-compose并按下Tab鍵,compose就可自動補全命令了。

    Docker Compose 快速入門

    基本步驟

    使用 Docker Compose 大致有 3 個步驟:

    • 使用 Dockerfile (或其他方式)定義應用程序環境,以便在任何地方重現該環境。
    • 在 docker-compose.yml 文件中定義組成應用程序的服務,以便各個服務在一個隔離的環境中一起運行。
    • 運行 docker-compose up 命令,啟動并運行整個應用程序。

    人門示例

    下面以 wzq-swagger-mng 為例講解 compose 的基本步驟。

  • 使用 mvn clean package 命令打包項目,獲得 wzq-swagger-mng.jar。
  • 在 wzq-swagger-mng.jar 所在路徑(默認是項目的 target 目錄)創建 Dockerfile 文件,并在其中添加如下內容。
  • FROM java:8 VOLUME /tmp ADD wzq-swagger-mng.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 10086 ENTRYPOINT ["java","-Djava.security.edg=file:/dev/.urandom","-jar","/app.jar"]
  • 在 wzq-swagger-mng.jar 所在路徑創建文件 docker-compose.yml,在其中添加如下內容。
  • version: '2'# 表示該docker-compose.yml文件使用的是version 2 file services:wzq-swagger-mng:# 指定服務名稱build:#指定Dockerfile所在文件夾的路徑context: ./dockerfile: ./Dockerfileports:- "10086:10086"# 指定端口映射,類似 docker run 的 -p 選項,注意使用字符串形式。
  • 在 docker-compose.yml 所在路徑執行以下命令:
    docker-compose up
    Compose就會自動構建鏡像并使用鏡像啟動容器。也可使用 docker-compose up -d后臺啟動并運行這些容器。
  • 測試訪問
  • 工程、服務、容器

    Docker Compose將所管理的容器分為三層,分別是工程(project),服務(service)以及容器(container)。Docker Compose運行目錄下的所有文件( docker-compose.yml、extends文件或環境變量文件等)組成一個工程(默認為 docker-compose.yml所在目錄的目錄名稱)。一個工程可包含多個服務,每個服務中定義了容器運行的鏡像、參數和依賴,一個服務可包括多個容器實例。
    對應上面案例中工程名稱是 docker-compose.yml 所在的目錄名。該工程包含了1個服務,服務名稱是 wzq-swagger-mng。執行 docker-compose up -d 時,啟動了 wzq-swagger-mng 服務的1個容器實例。

    docker-compose.yml 常用命令

    docker-compose.yml是 Compose的默認模板文件。該文件有多種寫法,例如 Version 1 file format、 Version2 file format、Version2. 1 file format、 Version3 file format等。其中, Version 1 file format將逐步被被棄用, Version2x及 Version3x基本兼容,是未來的趨勢。本次只討論 Version2 file format下的常用命令。

  • build
    配置構建時的選項, Compose會利用它自動構建鏡像。buld的值可以是一個路徑
    例如
  • build:./Dockerfile

    也可以是一個對象,用于指定 Dockerfile和參數,
    例如

    build:context: ./dockerfile: ./Dockerfile agrs:jacob: 1
  • command
    覆蓋容器啟動后默認執行的命令,示例
  • command: bundle exec thin -p 3000

    也可以是一個list,類似于 Dockerfile中的CMD指令,格式如下:

    command: [bundle, exec, thin,-p, 3000]
  • dns
    配置dns服務器。可以是一個值,也可以是一個列表。示例:
  • dns: 8.8.8.8 dns:- 8.8.8.8- 9.9.9.9
  • dns_search
    配置DNS的搜索域,可以是一個值,也可以是一個列表。示例
  • dns_search:example.com dns_search:- dc1.example.com- dc2.example.com
  • environment
    環境變量設置,可使用數組或字典兩種方式。示例:
  • environmentRACK_ENV: developmentSHOW: trueSESSION SECRETenvironment- RACK_ENV=development- SHOW=true- SESSION_SECRET
  • env_file
    從文件中獲取環境變量,可指定一個文件路徑或路徑列表。如果通過 docker-compose FILe指定了 Compose 文件,那么 eny_file中的路徑是 Compose 文件所在目錄的相對路徑。使用 environment 指定的環境變量會覆蓋 eny_file指定的環境變量。示例
  • eny_file: .env eny_file- /common.env- /apps/web.env- /opt/secrets. env
  • expose
    暴露端口,只將端口暴露給連接的服務,而不暴露給宿主機。示例:
  • expose:- "3000"- "8090"
  • external_links
    連接到 docker-compose.yml外部的容器,甚至并非 Compose 管理的容器,特別是提供共享或公共服務的容器。格式跟 links類似,例如:
  • external_links:- redis_1- project_db_1: mysql- project_db_1: postgresql
  • image
    指定鏡像名稱或鏡像Id,如果本地不存在該鏡像, Compose會嘗試下載該鏡像。
    示例
  • image: Java
  • links
    連接到其他服務的容器。可以指定服務名稱和服務別名( SERVICE: ALIAS),也可只指定服務名稱。例如:
  • web:links:- db- db:database- redis
  • networks
    詳細查看:Docker-compose 常用命令及網絡設置(五)

  • network_mode
    設置網絡模式。示例

  • network_mode: "bridge" network_mode: "host" network_mode: "none" network_mode: "service:[service name]" network_mode: "container:[container name/id]"
  • ports
    暴露端口信息,可使用H0ST:CONTAINER的格式,也可只指定容器端口(此時宿主機將會隨機選擇端口),類似于 docker run-p。
    需要注意的是,當使用H0ST:CONTAINER格式映射端口時,容器端口小于60將會得到錯誤的接口,因為yaml會把xx:yy的數字解析為60進制。因此,建議使用字符串的形式。示例:
  • ports- "3000"- "3000-3905"- "8000:8000"- "9099-9091:8080-8081"- "49100:22"- "127.0.0.1:8001:8001"- "127,0.0.1:5000-5010:5000-5010"
  • volumes
    卷掛載路徑設置。可以設置宿主機路徑(HOST:CONTAINER),也可指定訪問模式(HOST:C0ONTAINER:ro)。示例:
  • volumes# Just specify a path and let the Engine create a volume- /var/lib/mysql# Specify an absolute path mapping- /opt/data:/var/lib/mysql# Path on the host relative to the Compose file- ./cache:/tmp/cache# User-relative path- ~/configs:/etc/configs/:ro#f Named volume- datavolume:/var/lib/mysql
  • volumes_from
    從另一個服務或容器掛載卷。可指定只讀(ro)或讀寫(rw),默認是讀寫(rw)。
    示例
  • volumes from- service_name- service_name:ro- container:container_name- container:container_name:rw

    docker-compose.yml還有很多其他命令,比如 depends_on、pid、 devices等。
    本次僅挑選常用的命令進行講解,其他命令不再贅述。感興趣的讀者們可參考官方文檔:https://docs.docker.com/compose/compose-file/

    學習于:《Spring Cloud與Docker 微服務架構實戰》 — 周立

    總結

    以上是生活随笔為你收集整理的Docker-compose 安装与基本使用(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。