国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Docker】docker-compose基本使用

這篇具有很好參考價值的文章主要介紹了【Docker】docker-compose基本使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Docker】docker-compose基本使用

1. docker 項目部署弊端

一般的docker部署項目有如下弊端:

  1. 一個完整的項目通常需要用到多個容器,N個容器之間會形成依賴,比如項目啟動時如果沒有啟動mysql容器,那么項目容器就啟動不起來。沒有啟動es容器,kibana容器也啟動不起來。所以,容器啟動之間的編排顯得至關(guān)重要,項目龐大時我們很難記住容器啟動順序
    • 對于容器的編排尚且有一個很簡單的方法就是寫一個shell腳本來一次性解決啟動順序的問題。
  2. 一般情況下,docker中容器很多,可能有很多個其他項目的容器在里面。我們沒有辦法站在項目的角度將一個項目用到的容器劃分在一起,日后在另一臺服務(wù)器啟動該項目就變得很困難了。

而 docker-compose 就能夠解決以上問題。


2. docker-compose 簡介

Docker Compose是一個用于定義和運行多個Docker容器的工具,負責(zé)實現(xiàn)對 docker 容器集群的快速編排,它使用 YAML 文件來配置應(yīng)用程序的服務(wù)、網(wǎng)絡(luò)和卷等方面。

Compose 中有兩個重要的概念:

  • 服務(wù)(service):一個應(yīng)用的容器,實際上可以包括若干運行相同鏡像的容器實例。
  • 項目(project):由一組關(guān)聯(lián)的應(yīng)用容器組成的一個完整業(yè)務(wù)單元,在 docker-compose.yml 文件中定義。

3. 實踐

創(chuàng)建一個項目:

mkdir ems

在ems目錄創(chuàng)建一個 docker-compose.yml 模板文件,如下所示:

#代表使用 docker-compose 項目的版本號
version: "3.0"

services:
	
	tomcat:
	 container_name: tomcat01	#代表給容器指定一個名稱,類似于 docker run --name 參數(shù)。不寫就會默認給一個名字,推薦使用默認名字。
	 image: tomcat:8.0	#代表使用哪個鏡像,類似于 docker run 指定的鏡像名稱
	 ports:
	  - 8080:8080
	  
	tomcat1:
	 image: tomcat:8.0
	 ports:
	  - 8081:8080
	  
	redis:
	 image: redis:5.0.12
	 ports:
	  - "6379:6379"
	  
	mysql:
	 image: mysql:5.6
	 ports:
	 - "3306:3306"
	 environment: #代表給當(dāng)前容器啟動指定環(huán)境 類似于 docker run -e MYSQL_ROOT_PASSWORD=root
	  #MYSQL_ROOT_PASSWORD: root
	  - "MYSQL_ROOT_PASSWORD=root"
	 volumes:	#代表給當(dāng)前容器和宿主機指定數(shù)據(jù)卷 類似于 docker run -v 注意:docker-compose使用絕對路徑必須先創(chuàng)建才能使用
	  #- /root/mysqldata1:/var/lib/mysql
	  - mysqlData:/var/lib/mysql
	  
volumes:
 mysqlData: #聲明數(shù)據(jù)卷別名,只需要聲明就行,不用賦值,因為docker-compose不會自動創(chuàng)建數(shù)據(jù)卷,所以要先聲明。

啟動docker-compose一組服務(wù):

#這個命令必須在 docker-compose.yml 配置文件目錄下執(zhí)行
docker-compose up

停止并銷毀 Docker Compose 文件定義的容器、網(wǎng)絡(luò)和卷:

docker-compose down

具體來說,docker-compose down 命令會執(zhí)行以下步驟:

  1. 停止正在運行的容器:它會找到并停止使用 docker-compose up 啟動的容器。
  2. 移除容器:停止后,這些容器將被,它們的狀態(tài)信息也將被清除。
  3. 移除網(wǎng)絡(luò):與容器關(guān)聯(lián)的網(wǎng)絡(luò)將被刪除。這適用于由 docker-compose 創(chuàng)建的網(wǎng)絡(luò)。
  4. 移除卷:由 docker-compose 創(chuàng)建的卷將被銷毀。這將刪除在容器中創(chuàng)建的任何持久數(shù)據(jù)總之,docker-compose down 命令是一種方便的方式,用于停止和清理你在啟動容器時所創(chuàng)建的所有資源,以便你可以完全重置環(huán)境或重新部署應(yīng)用程序。請注意,執(zhí)行此命令將不會刪除 Docker 鏡只會停止并移除與 docker-compose up 命令相關(guān)的容器、網(wǎng)絡(luò)和卷。

4. 模板命令

參考文檔:參考文檔

4.1 build 指令

我們在 docker-compose.yml 文件中編寫的服務(wù)在本地都需要有鏡像,那如果是我們需要部署自己的springboot項目的話,我們是不是還得先編寫Dockerfile來將項目打成鏡像?這樣就很麻煩了,所以可以使用build指令來解決這一問題。

version: '3'
services:

  webapp:
    build:
      context: ./dir # 指定Dockerfile上下文目錄
      dockerfile: Dockerfile-alternate #指定Dockerfile文件的名字,一般Dockerfile不會改名
      args:	#使用 arg 指令指定構(gòu)建鏡像時的變量。
        buildno: 1

4.2 command 指令

覆蓋容器啟動后默認執(zhí)行的命令。

command: echo "hello world"

4.3 container_name 指令

指定容器名稱。默認將會使用 項目名稱_服務(wù)名稱_序號 這樣的格式。

container_name: docker-web-container

注意: 指定容器名稱后,該服務(wù)將無法進行擴展(scale),因為 Docker 不允許多個容器具有相同的名稱。


4.4 depends_on 指令

解決容器的依賴、啟動先后的問題,以下例子中會先啟動 redis、db 再啟動 web

version: '3'

services:
  web:
    build: .
    depends_on:
      - db
      - redis

  redis:
    image: redis

  db:
    image: postgres

注意:web 服務(wù)不會等待 redis db 「完全啟動」之后才啟動。


4.5 env_file 指令

相當(dāng)于 docker run -e。從文件中獲取環(huán)境變量,可以為單獨的文件路徑或列表。

如果通過 docker compose -f FILE 方式來指定 Compose 模板文件,則 env_file 中變量的路徑會基于模板文件路徑。

如果有變量名稱與 environment 指令沖突,則按照慣例,以后者為準。

env_file: .env

env_file:
  - ./common.env
  - ./apps/web.env
  - /opt/secrets.env

環(huán)境變量文件中每一行必須符合格式,支持 # 開頭的注釋行。

# common.env: Set development environment
PROG_ENV=development

注意:推薦文件都命名為 .env ,因為在linux中默認不會顯示 .env文件,提高了一絲絲的安全性。


4.6 environment 指令

相當(dāng)于 docker run -e。設(shè)置環(huán)境變量。你可以使用數(shù)組或字典兩種格式。

只給定名稱的變量會自動獲取運行 Compose 主機上對應(yīng)變量的值,可以用來防止泄露不必要的數(shù)據(jù)。

environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET

4.7 image 指令

相當(dāng)于 docker run image。指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試拉取這個鏡像。

image: ubuntu
image: orchardup/postgresql
image: a4bc65fd

4.8 nteworks 指令

相當(dāng)于 docker run --network。配置容器連接的網(wǎng)絡(luò)。

Compose指定網(wǎng)絡(luò)必須先聲明。

version: "3"
services:

  some-service:
    networks:
     - some-network
     - other-network

networks:
  some-network:
  other-network:

4.9 ports 指令

相當(dāng)于 docker run -p。暴露端口信息。

使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。

ports:
 - "3000"	#宿主機端口隨機
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"

4.10 volumes 指令

相當(dāng)于docker run -v。數(shù)據(jù)卷所掛載路徑設(shè)置。可以設(shè)置為宿主機路徑(HOST:CONTAINER)或者數(shù)據(jù)卷名稱(VOLUME:CONTAINER),并且可以設(shè)置訪問模式 (HOST:CONTAINER:ro)。

該指令中路徑支持相對路徑。

volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro

如果路徑為數(shù)據(jù)卷名稱,必須在文件中配置數(shù)據(jù)卷。

version: "3"

services:
  my_src:
    image: mysql:8.0
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

4.11 restart 指令

相當(dāng)于 docker run --restart=always。指定容器退出后的重啟策略為始終重啟。該命令對保持服務(wù)始終運行十分有效,在生產(chǎn)環(huán)境中推薦配置為 always 或者 unless-stopped

restart: always

5. Compose 常用命令

5.1 命令對象與格式

對于 Compose 來說,大部分命令的對象既可以是項目本身,也可以指定為項目中的服務(wù)或者容器。如果沒有特別的說明,命令對象將是項目,這意味著項目中所有的服務(wù)都會受到命令影響。

執(zhí)行 docker compose [COMMAND] --help 可以查看具體某個命令的使用格式。

docker compose 命令的基本的使用格式是

docker compose [-f=<arg>...] [options] [COMMAND] [ARGS...]

5.2 命令選項

  • -f, --file FILE 指定使用的 Compose 模板文件,默認為 docker-compose.yml,可以多次指定。
  • -p, --project-name NAME 指定項目名稱,默認將使用所在目錄名稱作為項目名。
  • --verbose 輸出更多調(diào)試信息。
  • -v, --version 打印版本并退出。

5.3 up 命令

格式為 docker compose up [options] [SERVICE...]。

該命令十分強大,它將嘗試自動完成包括構(gòu)建鏡像,(重新)創(chuàng)建服務(wù),啟動服務(wù),并關(guān)聯(lián)服務(wù)相關(guān)容器的一系列操作。

鏈接的服務(wù)都將會被自動啟動,除非已經(jīng)處于運行狀態(tài)。

可以說,大部分時候都可以直接通過該命令來啟動一個項目。

默認情況,docker compose up 啟動的容器都在前臺,控制臺將會同時打印所有容器的輸出信息,可以很方便進行調(diào)試。

當(dāng)通過 Ctrl-C 停止命令時,所有容器將會停止。

如果使用 docker compose up -d,將會在后臺啟動并運行所有的容器。一般推薦生產(chǎn)環(huán)境下使用該選項。

默認情況,如果服務(wù)容器已經(jīng)存在,docker compose up 將會嘗試停止容器,然后重新創(chuàng)建(保持使用 volumes-from 掛載的卷),以保證新啟動的服務(wù)匹配 docker-compose.yml 文件的最新內(nèi)容。如果用戶不希望容器被停止并重新創(chuàng)建,可以使用 docker compose up --no-recreate。這樣將只會啟動處于停止狀態(tài)的容器,而忽略已經(jīng)運行的服務(wù)。如果用戶只想重新部署某個服務(wù),可以使用 docker compose up --no-deps -d <SERVICE_NAME> 來重新創(chuàng)建服務(wù)并后臺停止舊服務(wù),啟動新服務(wù),并不會影響到其所依賴的服務(wù)。

選項:

  • -d 在后臺運行服務(wù)容器。
  • --no-color 不使用顏色來區(qū)分不同的服務(wù)的控制臺輸出。
  • --no-deps 不啟動服務(wù)所鏈接的容器。
  • --force-recreate 強制重新創(chuàng)建容器,不能與 --no-recreate 同時使用。
  • --no-recreate 如果容器已經(jīng)存在了,則不重新創(chuàng)建,不能與 --force-recreate 同時使用。
  • --no-build 不自動構(gòu)建缺失的服務(wù)鏡像。
  • -t, --timeout TIMEOUT 停止容器時候的超時(默認為 10 秒)。

5.4 down 命令

此命令將會停止 up 命令所啟動的容器,并移除網(wǎng)絡(luò)。

docker-compose down				#對整個項目操作
docker-compose down 服務(wù)id	  #對某個服務(wù)操作	

5.5 exec 命令

進入指定的容器。

docker-compose exec 服務(wù)id bash

5.6 ps 命令

列出項目中目前的所有容器。

格式為 docker compose ps [options] [SERVICE...]。

選項:

  • -q 只打印容器的 ID 信息。

5.7 restart 命令

重啟項目中的服務(wù)。

格式為 docker compose restart [options] [SERVICE...]。

選項:

  • -t, --timeout TIMEOUT 指定重啟前停止容器的超時(默認為 10 秒)。
docker-compose restart 對整個項目操作
docker-compose restart -t 服務(wù)id

5.8 rm 命令

刪除所有(停止狀態(tài)的)服務(wù)容器。推薦先執(zhí)行 docker compose stop 命令來停止容器。

格式為 docker compose rm [options] [SERVICE...]。

選項:

  • -f, --force 強制直接刪除,包括非停止狀態(tài)的容器。一般盡量不要使用該選項。
  • -v 刪除容器所掛載的數(shù)據(jù)卷。

5.9 top 命令

查看整個項目中所有服務(wù)容器內(nèi)運行進程或者查看某個指定id服務(wù)的容器的進程。

docker-compose top [服務(wù)id]

5.10 logs 命令

查看服務(wù)容器的輸出。默認情況下,docker compose 將對不同的服務(wù)輸出使用不同的顏色來區(qū)分??梢酝ㄟ^ --no-color 來關(guān)閉顏色。

格式為 docker compose logs [options] [SERVICE...]。文章來源地址http://www.zghlxwxcb.cn/news/detail-596266.html

到了這里,關(guān)于【Docker】docker-compose基本使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java】微服務(wù)——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

    【Java】微服務(wù)——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

    微服務(wù)雖然具備各種各樣的優(yōu)勢,但服務(wù)的拆分通用給部署帶來了很大的麻煩。 分布式系統(tǒng)中,依賴的組件非常多,不同組件之間部署時往往會產(chǎn)生一些沖突。 在數(shù)百上千臺服務(wù)中重復(fù)部署,環(huán)境不一定一致,會遇到各種問題 1.1.1.應(yīng)用部署的環(huán)境問題 大型項目組件較多,運

    2024年02月04日
    瀏覽(33)
  • docker及docker-compose安裝及使用

    docker及docker-compose安裝及使用

    docker安裝及使用 Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows操作系統(tǒng)的機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。 虛擬機:虛擬機是通過Hy

    2024年02月10日
    瀏覽(23)
  • 使用docker、docker-compose部署微服務(wù)

    使用docker、docker-compose部署微服務(wù)

    這里已經(jīng)在docker安裝并啟動好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。 注意如果配置文件中有Redis、MySQL、nacos這些的連接信息,需要把IP地址改為服務(wù)器的公網(wǎng)地址或者內(nèi)網(wǎng)地址,不會連接不到。 我這里以微服務(wù)版若依的網(wǎng)關(guān)服務(wù)為例,上傳到指定目錄。 官方文檔

    2024年02月10日
    瀏覽(26)
  • Docker-compose的使用

    Docker-compose的使用

    目錄 Docker-compose 簡介 docker-compose的安裝 docker-compose.yaml文件說明 compose的常用命令 總結(jié) Docker-compose 是用于定義和運行多容器的 Docker 應(yīng)用程序的工具??梢允褂肶AML文件來配置應(yīng)用程序的服務(wù)。(通俗講是可以通過yml文件配置,批量運行多容器的docker應(yīng)用程序) Compose的使用一

    2024年02月12日
    瀏覽(23)
  • 安裝使用docker-compose

    安裝使用docker-compose

    Docker-Compose項目是Docker官方的開源項目,負責(zé)實現(xiàn)對Docker容器集群的快速編排 Docker-Compose將所管理的容器分為三層,分別是工程(project),服務(wù)(service)以及容器(container)。Docker-Compose運行目錄下的所有文件(docker-compose.yml,extends文件或環(huán)境變量文件等)組成一個工程,若

    2024年02月15日
    瀏覽(29)
  • 【Docker】(七)使用docker-compose一鍵部署環(huán)境

    【Docker】(七)使用docker-compose一鍵部署環(huán)境

    本系列文章記錄了從0開始學(xué)習(xí)Docker的過程,Docker系列歷史文章: (一)基本概念與安裝使用 (二)如何使用Docker發(fā)布一個SpringBoot服務(wù) (三)使用registry遠程鏡像倉庫管理鏡像 (四)使用volume持久化Docker容器中的Redis數(shù)據(jù) (五)使用bind mounts修改Docker容器中的Nginx配置 (六)

    2024年02月08日
    瀏覽(25)
  • docker部署(使用docker-compose)手把手教程

    docker部署(使用docker-compose)手把手教程

    docker-compose.yml 文件內(nèi)容 ?安裝成功后,運行 docker ps 出現(xiàn)如下報錯 ?表示未啟動docker,運行下列語句即可 安裝完成后,運行 賦予權(quán)限即可 在服務(wù)器上單獨新建文件夾名為ruoyi-admin dockerfile文件如下 ?執(zhí)行如下命令 這就構(gòu)建出本地的鏡像了。 ? 依次再構(gòu)建出ruoyi/ruoyi-xxl-job-adm

    2024年02月01日
    瀏覽(29)
  • 使用 docker-compose 部署 Jenkins

    使用 docker-compose 部署 Jenkins

    注:我是在虛擬機(Ubuntu)上部署了 docker-compose,然后才使用 docker-compose 部署 Jenkins! 關(guān)于如何在 Ubuntu 部署 docker-compose,可以看我其它的文章。 docker_jenkins_compose 目錄下創(chuàng)建 docker-compose.yml 文件: 進入 docker-compose.yml 文件: 按下鍵盤上的 i ,進入可以編寫的模式。 將下面的

    2024年02月17日
    瀏覽(25)
  • 使用docker-compose搭建gitlab

    使用Docker搭建GitLab帶來的好處。它簡化了部署過程,將安裝和配置整合為一個容器,并通過簡單的命令即可啟動和運行GitLab實例。Docker的隔離和容器化特性確保了GitLab與其依賴的軟件環(huán)境的隔離,避免了沖突問題。此外,Docker的可移植性使得GitLab可以在不同平臺和環(huán)境中運行

    2024年01月18日
    瀏覽(59)
  • 【初識 Docker | 中級篇】 Docker 中使用 docker-compose 安裝 Nacos

    【初識 Docker | 中級篇】 Docker 中使用 docker-compose 安裝 Nacos

    可以按照以下步驟在 Docker 中安裝 Nacos 拉取 nacos 鏡像: docker pull nacos/nacos-server 運行 nacos 容器: docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server 訪問 nacos 控制臺:打開瀏覽器,在地址欄中輸入 http://localhost:8848/nacos ,訪問 nacos 控制臺。 提示:以下是本篇文章正文內(nèi)容

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包