2017-01-09 56 views
2

我用命令
如何使用容器標識重新啓動容器?

docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file" 

現在我看到的容器已退出

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS      PORTS    NAMES 
9e5017aef3f9  ubuntu    "/bin/bash -c 'echo '" 38 seconds ago  Exited (0) 36 seconds ago      elegant_euler 

問題創造了一個容器:我怎樣才能重新啓動,並使用獲得的交互模式對於此容器的container-id
我不能使用docker run -it <image_name>,因爲這需要圖像名稱而不是容器ID。 我嘗試使用碼頭附加,但我認爲這隻適用於運行容器。 我不想提交這個容器,所以我怎樣才能重新啓動並進入交互模式使用它的container-id這個容器?
編輯:我能夠進入其他容器使用docker start {container-id},然後運行docker attach {container-id}。我想知道是否有什麼特別的方式來創建容器,這會導致這種行爲。我剛剛開始與碼頭工人,所以如果我錯過了一些基本的東西,指引我正確的方向。

+0

是不是最好的解決方案,但我使用[portainer](http://portainer.io)來管理我的碼頭圖像。 –

+0

檢查此文檔 - https://docs.docker.com/engine/tutorials/dockerizing/ – Rao

+0

[如何在現有的碼頭集裝箱上運行命令?](http://stackoverflow.com/questions/ 26153686 /如何運行一個已經存在的碼頭集裝箱的命令) – Matt

回答

2

容器在完成其命令時退出。所以容器開始於

docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file" 

將在命令echo完成後立即退出。在這種情況下,重啓該容器是沒有意義的。

如果以獨立模式運行新的容器,則可以保留該容器並在第二次附加它。

所以,你的情況,你應該從圖像中分離的模式下運行一個新的集裝箱像/bin/bash運行一個命令,那麼你就可以運行回聲和其附加

docker run -d -ti ubuntu /bin/bash 
docker exec -ti <containerId> /bin/bash -c "echo 'cool content' > /tmp/cool-file" 

容器將保持活躍,所以你可以執行更多的命令,例如 搬運工EXEC -ti /斌/慶典-c「貓的/ tmp /冷文件」

或運行一個新的/斌/慶典以「重視」的容器,並在它的工作作爲一個命令提示符

docker exec -ti <containerId> /bin/bash 
[email protected]<containerId>:/# cat /tmp/cool-file 
cool content 

您可以成功地停止/啓動/重新啓動這個容器

docker stop <containerId> && docker start <containerId> 

docker restart <containerId> 

提醒當你重啓一個容器時,它會再次執行它的原始命令。所以如果你能夠重新啓動你的用例容器(但你不會),它會再次運行/bin/bash -c "cat /tmp/cool-file"

重新啓動一個容器,使用命令/ bin/bash運行,它將在重新啓動時再次運行相同的命令。

重新啓動現有容器時,通常不能將命令更改爲RUN;要做到這一點,你可以嘗試一些技巧,建議在How to start a stopped docker container with a different command

0

檢查Docker start command

docker stop {containerId} && doicker start -i {containerId} 
+0

docker start命令沒有-t標誌。此外,我在我的問題中添加了一個更精確的編輯。 – AnukuL

0

我想自己:

docker restart <container_id> 

docker exec -it <container_id> bash 

作品都完美的重新啓動,並進入交互終端。

相關問題