簡體   English   中英

docker-compose vs創建和運行映像

[英]docker-compose vs creating and running an image

我是Docker的新手,並試圖了解最適合我的項目(Web應用程序)的東西。

到目前為止,我知道我可以:

  • 使用docker-compose up -d啟動一個由docker-compose.yaml中的一組規則定義的容器
  • 從dockerfile構建映像,然后從該映像創建容器

如果我理解正確, docker-compose up -d允許我(通過volumes )將文件(例如,我的應用程序)掛載到容器中。 但是,如果我構建映像,則可以將應用程序本機嵌入其中(使用DockerfileCOPY指令)。

我的理解正確嗎? 我應該如何選擇這兩個選擇?

Docker Compose只是docker命令的便利包裝。

您可以在Docker中執行的所有操作都可以組成,您可以通過運行docker來簡單地執行。

例如,這些泊塢窗命令:

$ docker build -t temp .
$ docker run -i -p 3000:80 -v $PWD/public:/docroot/ temp

類似於讓此docker撰寫文件:

version: '3'

services:
  web:
    build: .
    image: temp
    ports: ["3000:80"]
    volumes:
    - ./public:/docroot

並運行:

$ docker-compose up web

盡管在使用多個容器時docker compose優勢最為明顯,但它也可以用於啟動單個容器。

我的建議是:在沒有docker compose的情況下開始,以了解如何構建簡單映像以及如何使用docker命令行運行它。 當您感到滿意時,請看一下docker compose。

至於將文件復制到容器或掛載它們的最佳實踐,答案是兩者 ,這就是原因:

在開發模式下時,您不想在每次代碼更改時都構建映像。 這是卷裝入起作用的地方。 但是,最終的Docker映像應包含您的代碼,以便可以將其部署到其他任何地方。 畢竟,這就是為什么我們使用容器對嗎? 這就是COPY發揮作用的地方。

最后,請記住,將卷裝載到容器時,它將“遮蓋”容器中該文件夾的內容-這就是同時使用mount和COPY並按預期工作的方式。

Docker-compose只是一個容器編排器。 我只是為您提供一種創建多個相關容器的簡單方法。 容器之間的關系可以是卷,網絡,開始順序,環境變量等。

在后台,docker-compose使用普通docker。 因此,您可以使用docker-compose做任何事情(安裝卷,使用自定義網絡,縮放),都可以使用docker命令來完成(但當然更難)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM