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

Dockerfile與docker-compose容器編排(Docker系列第3章,共3章)

這篇具有很好參考價值的文章主要介紹了Dockerfile與docker-compose容器編排(Docker系列第3章,共3章)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

溫馨提示

  • 不同的組件需要不同的docker配置(例如容器卷,端口,環(huán)境變量等),使用你懂得工具看hub.docker.com官方手冊。
  • 不要死記硬背,因為這種東西不是天天要寫,過段時間就忘了,很容易引起挫敗感。
  • Dockerfile或者Docker-compose的編寫,可以安裝一些編輯器插件輔助編寫。
  • 非官方中文文檔鏡像地址:https://dockerdocs.cn

Dockerfile

  • 官方文檔:https://docs.docker.com/reference/dockerfile/#dockerfile-reference
  • 極簡概括:用于構(gòu)建Docker鏡像的文本文件,包含一些指令,用于描述如何構(gòu)建和配置容器,類比Linux的sh文件。
  • 適用場景:能夠使用docker的地方,并且需要復雜的構(gòu)建,都可以用Dockerfile。
  • 優(yōu)點:
    • 降低部署成本:使用Dockerfile可以將應用程序、運行時環(huán)境和依賴項打包到一個容器鏡像中,使得容器部署簡單化。
    • 方便版本控制:Dockerfile是文本文件,可以與應用程序的源代碼一起進行版本控制。
    • 自動化構(gòu)建: Dockerfile可以與持續(xù)集成和持續(xù)交付 (CI/CD) 流程集成,實現(xiàn)自動化構(gòu)建、測試和部署。
    • 靈活定制: Dockerfile允許DevOps自定義鏡像的構(gòu)建過程,可以根據(jù)具體的需求添加、刪除或修改指令,實現(xiàn)靈活的定制。
  • 缺點:
    • 學習成本:Dockerfile有自己的語法,需要額外學習。

編寫規(guī)則

  • 每條保留字(內(nèi)置關鍵字)指令都必須為大寫字母,后面至少跟隨一個參數(shù)值。
  • 表示注釋

  • 每條指令都會創(chuàng)建一個新的鏡像層并對鏡像進行提交,(docker會執(zhí)行類似docker commit的操作,提交一個新的鏡像層,然后并運行為一個新的容器,反復以上循環(huán),直到所有命令執(zhí)行完成)。
  • Dockerfile,D一定要大寫。
  • 同一個保留字可使用多次。

保留字說明

  • FROM: 指定基礎鏡像,用于構(gòu)建當前鏡像的基礎。例如 FROM ubuntu:latest 表示基于 Ubuntu 鏡像構(gòu)建,第一個指令必須是它。
  • MAINTAINER (已廢棄): 用于指定維護者信息,一般是郵件,但已在 Docker 1.13 版本中廢棄,建議使用 LABEL 指令來代替。
  • LABEL: 添加元數(shù)據(jù)到鏡像,通常用于指定鏡像的描述信息、版本號、維護者等。
  • RUN: 在鏡像構(gòu)建過程(docker build的時機)中執(zhí)行命令,用于安裝軟件包、設置環(huán)境變量等,有兩種運行方式,一種是shell原生風格,一種是exec風格(RUN ["參數(shù)1", "參數(shù)2", "參數(shù)3"])。
  • CMD: 指定容器啟動后(docker run的時機)立即要執(zhí)行的默認命令。如果 Dockerfile 中存在多個 CMD 指令,只有最后一個 CMD 會生效,支持shell和exec(這是防止空格產(chǎn)生的歧義)風格的指令,在命令行情況下,docker run命令,若與CMD執(zhí)行的有沖突,則docker run會覆蓋CMD中的指令。
  • EXPOSE: 聲明容器運行時監(jiān)聽的端口,但并不映射到宿主機端口,就是個擺設。
  • ENV: 設置環(huán)境變量,可以在后續(xù)的指令中使用。例如 ENV key val,使用$KEY進行引用。也可以寫成key=val。
  • ADD: 將文件、目錄、URL 等資源復制到容器中。與 COPY 類似,但 ADD 具有解壓功能,可以自動解壓壓縮文件。語法:add 宿主機路徑 容器路徑
  • COPY: 將本地文件復制到容器中。建議在只需要復制文件而不需要額外處理的情況下使用。
  • ENTRYPOINT: 類似CMD,但與CMD不同的是,指定的命令不會被 Dockerfile 后續(xù)的參數(shù)覆蓋,而是作為參數(shù)的執(zhí)行。當ENTRYPOINT遇見CMD時,CMD的含義就發(fā)生了變化,CMD變成了作為ENTRYPOINT的參數(shù)值,也就是說ENTRYPOINT為key,CMD為val,在命令行情況下,想要覆蓋原本的ENTRYPOINT,需要在命令行添加--entrypoint=原entrypoint 覆蓋命令。
  • VOLUME: 容器卷,垃圾玩意配置了死活不生效。
  • USER: 指定運行容器時使用的用戶名,默認是root。
  • WORKDIR: 登錄進容器后,默認進入的目錄,如果下方有COPY、ADD、RUN、CMD、ENTRYPOINT指令,并且參數(shù)寫的是相對路徑,那么WORKDIR參數(shù)會影響他們的參考系。
  • ARG: 定義構(gòu)建參數(shù),用于在構(gòu)建時傳遞變量。在構(gòu)建時通過 --build-arg 參數(shù)傳遞。
  • ONBUILD: 定義觸發(fā)器指令,用于在構(gòu)建派生鏡像時觸發(fā)一些操作。
  • STOPSIGNAL: 指定容器停止時發(fā)送的信號,默認為SIGTERM。

運行Dockerfile

在Dockerfile所在的目錄,執(zhí)行(最后有個空格和點):
docker build -t 鏡像名:tag .

Dockerfile簡單實操

假設需要在新的centos上安裝ifconfig和vim,啟動容器后,進入根目錄,并添加/test:/test的容器數(shù)據(jù)卷(Dockerfile添加不生效,試了20次+)

編輯一個Dockerfile
vim /test/Dockfile


FROM centos:latest
LABEL maintainer="zs@163.com"

ENV test_dir /test

#2021 年 12 月 31 日停止更新并停止維護,需要將鏡像從 mirror.centos.org 更改為 vault.centos.org
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
#yum clean all 是為了節(jié)省空間
RUN yum makecache && yum -y install net-tools &&  yum -y install vim && yum clean all

WORKDIR $test_dir
RUN echo ----------Success------------
# 選擇默認的shell為bash shell
CMD ["/bin/bash"]


保存退出后,運行Dockerfile
cd /test
docker build -t zs_centos:0.0.1 .

然后運行容器,并添加容器卷
docker run -it -v /test:/test --privileged=true 7611bfc76047 /bin/bash

docker-compose

  • 官方文檔:https://docs.docker.com/compose/reference
  • 極簡概括:使用一個docker-compose.yml文件來配置多個容器的啟動關閉和加載順序,實現(xiàn)集群化統(tǒng)一管理的docker官方工具。
  • 適用場景:多容器部署。對于小公司或個人幾乎用不到,10個任意規(guī)模的公司,用docker的有3個,用容器編排可能就1個,并不是所有的公司都有分布式、微服務、或集群。
  • 兩個重要概念:
    • 項目:項目是Docker Compose管理的一個單元,它由一個或多個服務組成,一個docker-compose.yml管理一個項目。
    • 服務:一個或多個容器組成一個服務,服務是個模糊的概念,可以理解為一個或多個容器對外提供一種解決方案。
    • 輔助記憶:一個docker-compose.yml管一個項目,一個項目管多個服務,一個服務管單個或多個容器。
  • 優(yōu)點:
    • 簡化多容器部署流程。
    • 對多個容器實現(xiàn)統(tǒng)一管理。
  • 缺點:
    • 學習成本大:DockerCompose有自己的語法,增加學習成本,可以照著官方文檔的docker run命令去實現(xiàn)。
    • 局限性:大規(guī)模復雜化的部署,可能需要更復雜的編排工具,或者更加精細化個性化的配置,這需要更復雜的編排計劃。
    • 不支持跨主機:對于需要跨多個主機進行部署和管理的場景,可能需要使用其它容器編排工具,如 Kubernetes(K8S)。
  • 安裝:
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

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

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

docker-compose --version

docker-compose.yml保留字

https://docs.docker.com/compose/compose-file/compose-file-v3/

  • version:定義Docker Compose文件的版本。例如,version: '3'表示使用Docker Compose的第3個版本。
  • services:定義各種服務的配置。每個服務可以包括鏡像、端口映射、環(huán)境變量等信息。
  • networks:定義網(wǎng)絡配置,包括網(wǎng)絡驅(qū)動、IP范圍等,相當于docker run --network
  • volumes:定義存儲卷的配置,用于持久化數(shù)據(jù)。
  • build:參數(shù)跟路徑,用于構(gòu)建鏡像,可以指定Dockerfile的路徑去構(gòu)建鏡像。
  • image:指定使用的鏡像名稱。
  • ports:定義端口映射,將容器內(nèi)部的端口映射到宿主機上。
  • environment:設置容器的環(huán)境變量,相當于docker run -e。
  • depends_on:參數(shù)值為依賴的服務名,定義服務之間的依賴關系,確保一個服務在另一個服務啟動之后再啟動,但不會等待前面的服務完全啟動就緒后在啟動。
  • volumes_from:從其他服務或容器掛載存儲卷。
  • links:鏈接到其他服務。
  • restart:定義容器跟隨docker引擎的重啟,相當于docker run --restart=always
  • network_mode:指定容器使用的網(wǎng)絡模式。
  • ports:定義容器端口映射。
  • external_links:鏈接到外部容器。
  • command:覆蓋容器啟動后默認執(zhí)行的命令。
  • entrypoint:覆蓋容器的默認入口點。
  • env_file:從文件加載環(huán)境變量,通過env文件來替代environment,env文件更加私密,防止信息泄露。
  • expose:暴露端口,不進行端口映射,只是標示容器監(jiān)聽的端口。
  • labels:為容器設置元數(shù)據(jù)。
  • logging:配置日志記錄選項。
  • container_name:指定容器的名稱,相當于docker run --name
  • devices:允許容器使用宿主機的設備。
  • dns:自定義DNS服務器。
  • dns_search:DNS搜索域名配置。
  • tmpfs:掛載臨時文件系統(tǒng)。
  • cap_add, cap_drop:添加或刪除容器的內(nèi)核能力。
  • security_opt:自定義容器的安全選項。
  • user:指定容器內(nèi)的命令以何種用戶身份運行。
  • working_dir:設置容器內(nèi)的工作目錄。
  • domainname:容器的域名。
  • hostname:容器的主機名。
  • ipc:設置容器的IPC模式。
  • mac_address:為容器指定MAC地址。
  • privileged:指定容器是否在特權模式下運行。
  • read_only:設置容器的文件系統(tǒng)為只讀。
  • shm_size:設置共享內(nèi)存大小。
  • stdin_open, tty:保持標準輸入開放,并分配一個偽終端。
  • extends:繼承另一個服務的配置。
  • external:聲明外部資源,如網(wǎng)絡或卷。
  • extra_hosts:添加額外的 hosts 條目到容器的 /etc/hosts 文件中。
  • healthcheck:定義容器的健康檢查配置。
  • isolation:指定容器的隔離技術。
  • logging:配置單個服務的日志記錄選項。
  • network_mode:指定容器使用的網(wǎng)絡模式。
  • pid:指定容器的PID模式。
  • platform:指定在哪個平臺上運行容器。
  • ports:定義端口映射,將容器內(nèi)部的端口映射到宿主機上。
  • secrets:從 Docker Swarm 中的 secret 中注入密鑰。
  • stop_grace_period:指定停止容器前的等待時間。
  • sysctls:自定義容器的內(nèi)核參數(shù)。
  • ulimits:設置容器的資源限制。
  • volume_driver:指定使用的卷驅(qū)動程序。
  • stop_signal:指定停止容器時發(fā)送的信號。
  • tty:分配一個偽終端。
  • restart:定義容器重啟策略。
  • scale:指定服務的副本數(shù)量。
  • deploy:在 Docker Swarm 中定義部署選項。
  • configs:從 Docker Swarm 中的 config 中注入配置文件。

docker-compose 常用操作命令

#docker-compose xxx 后面跟參數(shù)的,一般是服務器id,或者其它內(nèi)置指令。
docker-compose -h                   # 查看幫助
docker-compose up                   #啟動所有docker-compose服務
docker-compose up-d                 #啟動所有docker-compose服務并后臺運行
docker-compose up 服務名            #啟動指定docker-compose服務
docker-compose down                 #停止并刪除容器、網(wǎng)絡、卷、鏡像。
docker-compose exec yml里面的服務id  #進入容器實例內(nèi)部 docker-compose exec docker-compose.yml文件中寫的服務id/bin/bash
docker-compose ps                   #展示當前docker-compose編排過的運行的所有容器
docker-compose top                  #展示當前docker-compose編排過的容器進程
docker-compose logs 服務id          #查看容器輸出日志 -f為動態(tài)實時輸出
docker-compose config               #檢查配置
docker-compose config -q            #檢查配置,有問題才有輸出
docker-compose restart              #重啟服務
docker-compose start                #啟動服務
docker-compose stop                 #停止服務
docker-compose pause 服務id         #暫停狀態(tài)中的服務
docker-compose unpause 服務id       #恢復處于暫停狀態(tài)中的服務

docker-compose.yml簡單實操

記得把中文注釋去了。文章來源地址http://www.zghlxwxcb.cn/news/detail-851738.html

//docker-compose版本號,這個和docker引擎版本關聯(lián),https://docs.docker.com/compose/compose-file/compose-file-v3/#compose-and-docker-compatibility-matrix
version: "3.8"
//定義多個服務
services:
	//服務起個名
	zs_nginx:
		//鏡像
		image: nginx:latest
		//相當于docker run -p參數(shù)
		ports:
		- "80:80"
		//容器卷
		volumes:
      - /test:/usr/share/nginx/html
	//服務起個名
	zs_mysql:
		//鏡像
		image: mysql:latest
		//相當于docker run -p參數(shù)
		ports:
		- "3306:3306"
		//環(huán)境變量,相當于docker run -e
		environment:
		//或者寫成MYSQL_ROOT_PASSWORD:ROOT
		- "MYSQL_ROOT_PASSWORD=root"

保存并退出

docker-compose up -d

docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                  NAMES
65b8ea2596c9   mysql:latest   "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   test-zs_mysql-1
8de18d446714   nginx:latest   "/docker-entrypoint.…"   5 seconds ago   Up 4 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp                      test-zs_nginx-1

到了這里,關于Dockerfile與docker-compose容器編排(Docker系列第3章,共3章)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 尚硅谷Docker實戰(zhàn)教程-筆記12【高級篇,Docker-compose容器編排】

    尚硅谷Docker實戰(zhàn)教程-筆記12【高級篇,Docker-compose容器編排】

    尚硅谷大數(shù)據(jù)技術-教程-學習路線-筆記匯總表【課程資料下載】 視頻地址:尚硅谷Docker實戰(zhàn)教程(docker教程天花板)_嗶哩嗶哩_bilibili 尚硅谷Docker實戰(zhàn)教程-筆記01【基礎篇,Docker理念簡介、官網(wǎng)介紹、平臺入門圖解、平臺架構(gòu)圖解】 尚硅谷Docker實戰(zhàn)教程-筆記02【基礎篇,Do

    2024年02月16日
    瀏覽(49)
  • 在docker編排文件docker-compose.yml中,指定容器的ip地址

    在docker-compose的yaml文件中,可以使用networks來指定容器的ip地址。具體來說,可以在services下面的某個service中添加networks字段,然后在該字段下面添加ipv4_address字段來指定該容器的ip地址。例如: 以上我們定義了一個名為back-tier的網(wǎng)絡,然后在web服務中使用了該網(wǎng)絡,并指定了

    2024年02月08日
    瀏覽(29)
  • 啟動docker容器的幾種方法和注意事項(docker-compose,dockerfile)

    注意使用掛載命令volumes的時候,類似文件掛載可以這樣寫 表示宿主機docker-compose.yml當前目錄下的/target/poi.jar文件掛載到容器默認目錄app下 (如果是通過命令docker run -d -p 8088:8088 -v ./target/poi.jar:./app/,這樣啟動容器有兩個報錯,第一個是這樣必須寫絕對路徑,不能寫相對路徑

    2024年02月11日
    瀏覽(49)
  • 【Java】微服務——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

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

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

    2024年02月04日
    瀏覽(33)
  • Docker-Compose編排與部署

    Docker-Compose編排與部署

    目錄 Docker Compose Compose的優(yōu)點 編排和部署 Compose原理 Compose應用案例 安裝docker-ce 阿里云鏡像加速器 安裝docker-compose docker-compose用法 Yaml簡介 驗證LNMP環(huán)境? ????????Docker Compose 的前身是 Fig,它是一個 定義及運行多個 Docker 容器的工具 ??梢允褂?YAML 文件來配置應用程序的服

    2024年02月14日
    瀏覽(26)
  • Docker-Compose編排與部署(lnmp實例)

    Docker-Compose編排與部署(lnmp實例)

    第四階段 時 ?間:2023年8月3日 參加人:全班人員 內(nèi) ?容: Docker-Compose編排與部署 目錄 一、Docker Compose (一)概述 (二)Compose適用于所有環(huán)境: (三)docker-compose官方文檔: (四)Compose的優(yōu)點: (五)編排和部署 二、Compose原理 三、Compose應用案例 (一)安裝docker-ce(

    2024年02月14日
    瀏覽(21)
  • docker學習:dockerfile和docker-compose

    docker學習:dockerfile和docker-compose

    以下內(nèi)容,部分來自gpt生成,里面的描述可能會出現(xiàn)問題,但代碼部分,我都會進行測試。 對于一個docker,例如python,我們需要其在構(gòu)建成容器時,就有np。有以下兩種方法: pull python,并run后,在里面pip install numpy,隨后對這個容器進行打包保存 在pull python時,就將pip ins

    2024年02月08日
    瀏覽(21)
  • Docker Dockerfile Docker-compose學習筆記

    Docker Dockerfile Docker-compose學習筆記

    Docker目前支持Centos7及以后的版本。64位操作系統(tǒng),內(nèi)核版本至少為3.10 安裝軟件源,以及devicemapper存儲類型 添加Docker yum源 安裝Docker 啟動Docker 測試是否能獲取鏡像 查看獲取的鏡像 生效配置信息 安裝Docker需要保證你的電腦開啟虛擬化 進入任務管理器→點擊性能→看一下CPU是

    2024年02月12日
    瀏覽(48)
  • Linux【CentOS】安裝Docker配置docker-compose 編排工具【超詳細】

    Linux【CentOS】安裝Docker配置docker-compose 編排工具【超詳細】

    Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows操作系統(tǒng)的機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。 1,環(huán)境不一致問題:例如代碼一樣,卻由于

    2024年02月05日
    瀏覽(32)
  • 基于docker,k8s 搭建服務(單體docker-compose編排)

    基于docker,k8s 搭建服務(單體docker-compose編排)

    1、 yum -y install gcc yum -y instacc gcc-c++ 2、安裝yum 工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 3、設置docker鏡像倉庫 阿里云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更改鏡像倉庫為阿里云 sed -i ‘s/download.docker.com/mirrors.aliyun.com/do

    2024年01月22日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包