當我運行docker build
我可以使用-t
或--tag
參數來威懾CONTAINER ID
。如何在運行docker-compose時設置容器ID?
但是當我使用docker-compose
話,我無法找到這個選項。
我知道docker-composer
可以創建許多容器,所以可能存在docker-compose.yml
集CONTAINER ID
的可能性?這個怎麼做?
當我運行docker build
我可以使用-t
或--tag
參數來威懾CONTAINER ID
。如何在運行docker-compose時設置容器ID?
但是當我使用docker-compose
話,我無法找到這個選項。
我知道docker-composer
可以創建許多容器,所以可能存在docker-compose.yml
集CONTAINER ID
的可能性?這個怎麼做?
您可以在您的Docker撰寫文件中指定它,例如docker-compose
正在執行。 docker-compose.yaml
。
構建和部署工作方式相同。只需將圖像名稱和標記設置爲subset of build或指定單獨的dockerfile即可。
version: '2'
services:
webapp:
build:
context: ./dir
image: username/repository:tag
鑑於docker-compose.yaml
運行docker-compose up
將產生如下:
$ docker-compose up
Building webapp
Step 1/1 : FROM hello-world
latest: Pulling from library/hello-world
5b0f327be733: Pull complete
Digest: sha256:1f1404e9ea1a6665e3664626c5d2cda76cf90a4df50cfee16aab1a78f58a3f95
Status: Downloaded newer image for hello-world:latest
---> 05a3bd381fc2
Successfully built 05a3bd381fc2
Successfully tagged myusername/myimagename:1.0
WARNING: Image for service webapp was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating dockercompose_webapp_1 ...
Creating dockercompose_webapp_1 ... done
Attaching to dockercompose_webapp_1
webapp_1 |
webapp_1 | Hello from Docker!
webapp_1 | This message shows that your installation appears to be working correctly.
webapp_1 |
webapp_1 | To generate this message, Docker took the following steps:
webapp_1 | 1. The Docker client contacted the Docker daemon.
webapp_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
webapp_1 | 3. The Docker daemon created a new container from that image which runs the
webapp_1 | executable that produces the output you are currently reading.
webapp_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it
webapp_1 | to your terminal.
webapp_1 |
webapp_1 | To try something more ambitious, you can run an Ubuntu container with:
webapp_1 | $ docker run -it ubuntu bash
webapp_1 |
webapp_1 | Share images, automate workflows, and more with a free Docker ID:
webapp_1 | https://cloud.docker.com/
webapp_1 |
webapp_1 | For more examples and ideas, visit:
webapp_1 | https://docs.docker.com/engine/userguide/
webapp_1 |
dockercompose_webapp_1 exited with code 0
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da057afd3277 myusername/myimagename:1.0 "/hello" 3 minutes ago Exited (0) 3 minutes ago dockercompose_webapp_1
$ ls
Dockerfile docker-compose.yaml
正如你可以看到docker-compose up
兩個內置容器和啓動它。它也被相應地命名。因此,不需要同時使用docker-compose build
和docker-compose up
,因爲docker-compose up
都將生成並啓動容器。最後,如果容器需要重建以任何理由,你可以簡單地運行docker-compose up --force-recreate
將泊塢窗重建容器和附加構建標籤將重新創建圖像:docker-compose up --force-recreate --build
問題nwa與Container Id設置可能性有關。 –
我不同意。上面清楚地指出瞭如何標記圖像並使用標記的圖像。 'image:username/repository:tag' –
-t選項docker build
沒有設置什麼稱爲CONTAINER ID
。事實上,它與容器無關。 docker build
的輸出是圖片,它是基於-t選項命名的。 docker build -t myorg:myimage .
會創建一個名爲myorg:myimage
的圖像,您可以使用後面的來構建容器,或者推送到碼頭註冊表,以便稍後使用它來構建容器。
碼頭構成中的等價物是docker-compose build
,而不是docker-compose up
。要在docker-compose版本中指定圖片標籤,您可以在撰寫文件的服務中使用build
和image
標籤 - 在這種情況下,使用docker-compose build
將根據build
指令構建圖像,並使用image
標籤。
你不需要去'docker-compose build'然後'docker-compose up',因爲'docker-compose up'會建立容器,如果它已經被賦予該指令的話'docker-compose.yaml'。 –
這是......真的。如果您運行'docker-compose up'或'docker run',並且目前機器上沒有容器所需的映像,則docker將通過一個進程嘗試獲取該映像。如果在yaml文件中有構建指令,它將執行的一件事是運行'docker-compose build'。但是,只有在圖像不存在的情況下才會執行此操作 - 如果在第一次啓動後更改了dockerfile,則必須顯式調用'build'以獲取所做的更改。他們真的是兩個單獨的命令,應該這樣想。 –
這是不正確的,如果您在dockerfile中有任何更改,您只需運行docker-compose up --force-recreate來讓它找到所做的更改並重新構建映像,所以再次運行時不需要運行2當docker up命令覆蓋這兩個命令時。 https://docs.docker.com/compose/reference/up/ –
無法設置容器標識,可能設置泊塢窗圖片標籤。 標記不過是圖像的版本。這是用標籤創建圖像的命令。 $ docker build -t imagename:tag target-folder-path –
這是不正確的,如果你使用docker-compose你可以在構建上指定圖像名稱,甚至是它的版本。如果docker-compose文件是使用build命令構建的,則您也不需要運行額外的命令來構建,可以在'docker-compose up'中使用構建。 –