日韩性视频-久久久蜜桃-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在手,一键足矣的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 在线播放av片 | 欧美日韩国产免费 | 九色视频国产 | 中文字幕第80页 | 色黄视频网站 | 欧美性生交xxxxx | 狠狠操女人 | 天天看片天天射 | 一区二区三区网站 | 欧产日产国产精品 | 波多野结衣免费在线视频 | 久久久久久久久久国产精品 | 伊人青青久 | 九九九视频在线观看 | 黄色污污视频软件 | 色窝窝综合色窝窝久久 | 亚洲成人网在线播放 | 6996电视影片免费看 | 免费激情小视频 | 欧美日韩综合一区二区 | 亚洲精品国产精品乱码不66 | 欧美日韩国产免费 | 911香蕉| 国产孕妇一区二区三区 | av大片免费在线观看 | 亚洲国产日韩欧美 | 四虎影视8848hh| 亚洲经典在线 | 蜜臀aⅴ国产精品久久久国产老师 | 97在线免费 | 精品日本一区二区三区在线观看 | 国产区91 | 婷婷六月综合网 | 精品一区视频 | 久久久久久久久久久av | 自拍偷拍 亚洲 | 性中国xxx极品hd | 国产内谢 | 懂色av一区二区三区四区五区 | 欧美成人精品一区二区综合免费 | 狠狠操免费视频 | 日本在线观看一区二区 | 一级片视频免费 | 成人亚洲国产 | 成人激情文学 | 色偷偷影院 | 欧美少妇一级片 | 日韩久久一级片 | 欧美一本 | 午夜一区 | 日韩不卡免费 | 成年人视频网站 | jizz黄| av夜夜操 | 在线观看你懂的视频 | 日本美女一区二区三区 | 日本嫩草影院 | 做a爰小视频 | 亚洲一区二区三区在线看 | 国产精品入口a级 | 久久久99精品 | 亚洲av无码专区首页 | 肉大捧一进一出免费视频 | 久久一久久 | 日本理论中文字幕 | 亚洲精品在线免费观看视频 | 国产粉嫩在线 | 欧美图片一区二区三区 | 麻豆传媒在线视频 | 欧美激情久久久久 | 蜜桃久久一区二区三区 | 高清欧美精品xxxxx在线看 | 在线观看亚洲视频 | 黄色高清片 | www.啪啪 | 伊人久久亚洲 | 国产精品免费看 | 99久久99久久久精品棕色圆 | 色一情一伦一子一伦一区 | 亚洲男人的天堂网站 | 永久av免费在线观看 | 97在线看 | 爱操视频| 精品欧美乱码久久久久久 | 国产女人18水真多18精品一级做 | 亚洲夜夜操 | 国产女人被狂躁到高潮小说 | 亚洲视频欧洲视频 | 日韩视频免费观看高清完整版 | 午夜在线免费视频 | 男女作爱网站 | 在线观看羞羞漫画 | 丁香花国语版普通话 | 男人天堂网址 | 少妇视频在线播放 | 亚洲精品www久久久久久广东 | 国产精品自拍网 | 久久免费网 | 精产国产伦理一二三区 |