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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Docker小白到实战之Docker Compose在手,一键足矣

發布時間:2023/12/4 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker小白到实战之Docker Compose在手,一键足矣 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Docker可以將應用程序及環境很方便的以容器的形式啟動,但當應用程序依賴的服務比較多,或是遇到一個大系統拆分的服務很多時,如果還一個一個的根據鏡像啟動容器,那就有點累人了,到這有很多小伙伴會說:弄個腳本就搞定啦;要的就是這個思路,Docker提供了一個叫Docker Compose的工具,一鍵啟動相關服務。

舉個例:比如開發一個Web項目,需要有數據庫、Redis、MongoDB、配置中心等等,如果將其進行容器化,可以有兩種選擇,第一種就是把所有的服務依賴和應用程序全部構建為一個鏡像,然后以一個容器運行,即這個容器里面包含了Web應用程序、數據庫、Redis、MongoDB、配置中心等;另一種方式就各自服務單獨啟動為一個容器服務,比較獨立,一般可以一個一個的啟動容器,然后通過網絡連接起來就行;顯然第二種方式是小伙伴們更多的選擇,如果能配上一個批量操作那就完美了,而Docker Compose就是來干這個事的。

正文

1. 概述

Docker Compose 是一個用于定義和運行多個容器服務的 Docker 應用程序工具;搭配使用 YAML 文件來配置應用程序服務,然后運行Docker Compose命令,一鍵啟動所有容器服務。

2. 安裝

Docker默認安裝環境下是不包含Docker Compose工具的,需要單獨安裝。Docker Compose工具搭配Docker才有意義,所以安裝Docker Compose之前需要安裝Docker。以下演示平臺為Linux,其他平臺請參照文檔:https://docs.docker.com/compose/install/

2.1 下載文件

其實Docker Compose是一個可執行文件,直接下載對應文件即可,執行如下命令:

#?下載Docker?Compose文件,?這個地址下載比較慢 sudo?curl?-L?"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname?-s)-$(uname?-m)"?-o?/usr/local/bin/docker-compose #?這個地址快點 sudo?curl?-L?"https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname?-s)-$(uname?-m)"?-o?/usr/local/bin/docker-compose

如下圖:

2.2 授予執行權限

下載下來的文件默認是沒有執行權限的,后續需要執行,所以得授予執行權限,執行如下命令即可:

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

看看權限結果分配如下:

這樣docker-compose就安裝完啦。

2.3 卸載

如果需要卸載,直接刪除即可,執行如下命令即可:

sudo?rm?/usr/local/bin/docker-compose

3. 使用

Docker Compose需要搭配YAML文件使用,YAML 是一種人類友好的數據序列化語言,適用于所有編程語言,后綴名為.yml。

所以在進行實操前,需要大概的了解一下YAML的語法,不要慌,語法和Json的思路很像,大概了解一下,后續用到查文檔就行啦。

3.1 簡單說說語法

YAML文件內容是通過空格的縮進來代表層次,常用的數據類型有如下:

  • 對象:鍵值對集合;

    #?yaml?對象語法 testKey:testValue #?Json?語法 {"testKey":"testValue"} #?yaml?嵌套對象 testKey:{testKey1:testValue1,testKey2:testValue2} #?Json?語法 {"testKey":{"testKey1":"testValue1","testKey2":"testValue2"}}
  • 數組:一組按次序排列的數據;用-前綴表示。

    #?yaml?數組語法 -value1 -value2 -value3 #?Json?數組語法 ["value1","value2","value3"] #?yaml?數組行內語法 testKey:[value1,value2] #?Json?語法 {"testKey":['value1','value2']}
  • 純量:不可再分的值,包括字符串、整數、浮點數、日期、布爾值等。

    #?yaml testKey:666 #?Json {testKey:666} #?yaml isbool:true #?Json {isbool:true}

常規的基本語法格式約定如下:

  • 大小寫敏感

  • 使用空格縮進表示層級關系

  • 縮進不允許使用tab,只允許空格

  • 縮進的空格數不重要,只要相同層級的元素左對齊即可

  • '#'表示注釋

大概了解上面這些,關于日常Docker Compose用到的文件基本上夠用了,如果有需要進階的,可以去查查對應的語法。傳送門:

https://yaml.org/spec/1.2.2/

https://www.runoob.com/w3cnote/yaml-intro.html

關于YAML文件內容中配置的命令和Dockerfile的命令差不多是一一對應的,稍后會簡單說說。

3.2 實操擼文件

這里還是以一個WebApi為例,例中需要依賴Redis服務。

  • 創建項目,編寫例子

    這里只是引入了一個Redis的緩存包,通過構造函數注入之后就可以直接用啦;編寫了一個API接口TestCache。

    這里還需要在Startup文件中注入相關服務,并指定Redis的連接地址,如下:

    運行起來測試一下效果,如下:

    Redis中也有值了,這里需要注意:存入Redis中的類型是Hash。

  • 編寫Dockerfile文件

    在項目根目錄創建一個Dockerfile文件,內容如下:

    關于Dockerfile中的內容這里就不細說了,之前有一篇文章專門分享的(點這里)。這里的Dockerfile目的就是將我們的WebApi項目構建為鏡像,和Redis沒有關系,不過這里不是通過執行命令構建,而是通過Compose文件一起構建。

    注:這里記得將Dockerfile文件通過右鍵->屬性->設置為始終復制,保證編譯后的文件有最新文件

  • 編寫Compose文件

    在項目根目錄下創建docker-compose.yml文件,內容如下:

    有了這個項目就可以一鍵啟動了,這里需要稍微改一下我們原來的代碼,如下:

    注:這里記得將docker-compose.yml文件通過右鍵->屬性->設置為始終復制,保證編譯后的文件有最新文件。

3.3 體驗一鍵啟動
  • 將項目先發布,并拷貝到對應的服務器上,如下:

    這里用的是我的阿里云服務器,拷貝文件如下:

  • 一鍵啟動

    在docker-compose.yml所在的目錄下執行如下命令:

    docker-compose?up

    下面是執行docker-compose up內部執行的步驟:

    先是構建我們的程序,然后拉取依賴的Redis服務,并啟動,最后啟動我們的程序。(執行順序和依賴有關系);啟動之后就可以根據docker-compose.yml文件中映射的端口訪問了,如下:

  • 看看啟動的容器名

    image-20211007165313310

    通過docker ps -n 2 查看最近啟動的容器,容器的名字規則是:目錄名_Compose文件中定義的服務名_序號,那小伙伴肯定會好奇為什么程序能通過myredis名字連接到redis,可以通過docker inspect composetest_myredis_1查看容器詳情:

    同樣可以查看到API服務對應的容器也是用的composetest_default這個網絡,這個網絡是一個橋接模式,可以通過docker network ls看到,如下:

  • docker compose常用命令

    docker-compose build:構建或者重新構建服務

    docker-compose up:構建、啟動容器,加上-d選項代表后臺運行。

    docker-compose ps:列出所有通過Compose運行的容器

    docker-compose logs:打印相關日志信息

    docker-compose stop/start/restartd:可以指定服務停止、開始和重新啟動

    docker-compose命令和docker的命令基本是一樣的。

  • docker-compose.yml文件內容常用屬性

    version:指定 docker-compose.yml 文件的版本,一般都是用version 3;

    services:定義多個容器集合,有多少寫多少;

    build:構建鏡像,和docker build一樣功效;

    environment:配置環境變量,和Dockerfile中ENV 關鍵字功能一樣;

    #?設置環境變量 environment:RACK_ENV:?developmentSHOW:?'true'

    expose:暴露端口,和Dockerfile中的EXPOSE 關鍵字功能一樣;

    expose:-?"80"-?"9999"

    ports:配置端口映射,和docker run -p一樣功效

    ports:-?"8080:80"-?"6379:6379"

    volumes:指定卷掛載路徑,與Dockerifle中的VOLUME 關鍵字功能一樣

    volumes:-?/var/lib/mysql-?/opt/data:/var/lib/mysql

    command:覆蓋容器啟動后默認執行的命令,和Dockerfile文件中的CMD命令一樣;

    command:?bundle?exec?thin?-p?3000

    image:指定要用的鏡像,構建的時候會拉取。

    #?指定要使用redis鏡像 image:?redis

上面列出了一些比較常用的,具體的可以參考官網:https://docs.docker.com/compose/compose-file/compose-file-v3/

代碼地址如下:https://gitee.com/CodeZoe/microservies-demo/tree/main/DockerComposeDemo

總結

上文只是演示了Docker Compose的使用,詳細的Compose文件內容還需要在實際應用過程中根據實際需要查閱,后續在說集群的時候還會說到。

關注“Code綜藝圈”,和我一起學習吧;

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Docker小白到实战之Docker Compose在手,一键足矣的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 男男做性免费视频网 | 日韩日韩 | 色香蕉在线 | 亚洲天天| 毛片链接| 成人伊人网| 色综合天天综合 | 成人一级视频在线观看 | 白丝女仆被免费网站 | 欧美人xxxx | 天天操天天操天天操天天操天天操 | 97理伦| 在线免费看mv的网站入口 | 777国产成人入口 | www.日韩av| 无码一区二区三区 | 日韩特级 | 日韩射吧 | 七月婷婷综合 | 中文幕无线码中文字夫妻 | 六月丁香在线视频 | 伊人免费在线观看高清版 | 神马三级我不卡 | 国产亚洲精品久久久久动 | 美女福利在线视频 | 久久免费国产视频 | 精品伦精品一区二区三区视频密桃 | 色香蕉网 | www.com捏胸挤出奶 | 丰满人妻中伦妇伦精品app | 久久久久99精品成人片我成大片 | 波多野结衣不卡视频 | 无码aⅴ精品一区二区三区浪潮 | 人妻少妇精品无码专区 | 五月亚洲综合 | 色黄视频在线观看 | 亚洲视频一二区 | 久久精品99国产精品日本 | 欧美日韩小说 | 在线观看91av | 日本三级生活片 | 毛片在线观看视频 | 欧美成视频 | 国产69页| 久久综合伊人77777麻豆最新章节 | 91一级片| 男人av影院 | 台湾av在线播放 | 红桃视频网站 | 妓院一钑片免看黄大片 | 女人天堂av| 四虎在线播放 | 亚洲人久久 | 免费看的毛片 | 永久免费网站直接看 | 男人av影院 | caoporn免费在线视频 | 国产欧美激情在线观看 | 六月婷婷久久 | av网址有哪些 | 免费黄色av片| 欧美天堂在线观看 | 国产日韩免费视频 | 色人阁视频 | 久久久99精品国产一区二区三区 | 中文字幕在线免费视频 | 欧美一级二级视频 | 久草中文视频 | 变态另类丨国产精品 | 国产麻豆乱码精品一区二区三区 | 成人欧美一区二区三区 | 青青草视频网站 | 国产又粗又黄又爽视频 | 日韩一级片网站 | 亚洲热在线 | 亚洲视频在线免费播放 | av毛片在线看 | 阿v天堂2018 俄罗斯丰满熟妇hd av色吧 | 国产图片一区 | 欧美交换国产一区内射 | 久久精品国产99 | 91色在线播放 | 久操福利在线 | 天天天天躁天天爱天天碰2018 | 深夜福利一区 | 中文字幕免费视频观看 | 911精品 | 国产成人免费观看视频 | 在线观看黄网 | 免费人妻精品一区二区三区 | 国产玖玖在线 | 亚洲av成人精品毛片 | 成人毛片在线视频 | 一级理论片 | 黄色激情网址 | 在线亚洲人成电影网站色www | 美女色网站 | 二区影院| 夜夜夜网|