1. 程式人生 > >說說docker run的--detach

說說docker run的--detach

當我們使用了 dockerrun命令執行一個新容器,然後也發現他端端正正的呆在我們的容器列表中,但是就是無法使用 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 

這樣就可以解決問題了。