說說docker run的--detach
阿新 • • 發佈:2018-12-14
當我們使用了docker
的run
命令執行一個新容器,然後也發現他端端正正的呆在我們的容器列表中,但是就是無法使用exec
命令,這是什麼原因呢?
$docker docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c8a61e5e09b php:latest "docker-php-entrypoi…" 10 minutes ago Up 10 minutes php
如圖我們看到,已經存在了這個容器,但如果這個時候使用exec
就會報錯,既沒有啟動這個容器。
$docker start 1c8a61e5e09b
$docker exec -it 1c8a61e5e09b /bin/bash Error response from daemon: www.smy1.com Container 1c8a61e5e09b is not running
但是如果我們繼續使用start
命令的話,他就會提示該容器已經啟動了,那這又是什麼原因呢?
因為我們單獨的使用run
只會啟動容器,他會立即啟動,相應然後就自動消失。你在這個時候使用exec
命令已經太遲了。
所以,當我們啟動容器的時候一定要加上--detach或者-d
$docker run -d -P php:latest
e63e06b3e66alasjdblqibeiqj1c8a61e5e09be7b996ec58a66438ee4e12db7f4d85189b21
# exec命令 $docker exec -it e63e06b3e66a /bin/bash -c "php --version" PHP 7.2.12 (cli) (built: Nov 16 2018 03:17:59) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
這樣就可以解決問題了。