說說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就會報錯,既沒有啓動這個容器。php

$docker start 1c8a61e5e09b
$docker exec -it 1c8a61e5e09b /bin/bash
Error response from daemon: Container 1c8a61e5e09b is not running

可是若是咱們繼續使用start命令的話,他就會提示該容器已經啓動了,那這又是什麼緣由呢?docker

由於咱們單獨的使用run只會啓動容器,他會當即啓動,相應而後就自動消失。你在這個時候使用exec命令已經太遲了。
因此,當咱們啓動容器的時候必定要加上--detach或者-d來保持容器在後臺持續運行。那麼咱們從新來一次。bash

$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

這樣就能夠解決問題了。ui

相關文章
相關標籤/搜索