聆听风声 点点滴滴都很珍贵!

docker与docker-compose进入容器内命令区分

2018-06-09

docker进入容器内

我们启动容器一般都是使用-d参数让容器后台运行,想要进入容器我们使用attach命令exec命令:

attach命令
$ docker run -dit ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
243c32535da7        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           nostalgic_hypatia

$ docker attach 243c
root@243c32535da7:/#

不过在容器中使用exit命令,会导致容器停止

exec命令

exec后面可以有多个参数,参数可以使用docker exec --help命令查看,这里只介绍 -i-t参数

  • 单独使用-i 只有返回结果,没有伪终端,

  • -t,-i组合使用可以使用伪终端

    $ docker run -dit ubuntu 69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6

    $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 69d137adef7a ubuntu:latest “/bin/bash” 18 seconds ago Up 17 seconds zealous_swirles

    $ docker exec -i 69d1 bash ls bin boot dev …

    $ docker exec -it 69d1 bash root@69d137adef7a:/#

在容器内使用exit命令,容器不会停止


docker-compose进入容器内

当我们的容器增多时,一个一个的去管理变得很麻烦,还好有管理工具,这里只点单介绍一下docker-compose,这是一个容器编排工具,可以集中管理容器 我们有时候在使用docker-compose启动容器时都会让容器在后台运行:

$ sudo docker-compose up -d

想要进入容器时,使用:$ sudo docker exec -it id名 bash却进不去,这是docker与docker- compose命令的区别,我们要进入使用docker-compose命令启动的容器内时,应该使用以下命令:

docker-compose exec container_name bash



docker-compose run container_name bash

这两条命令都可以,使用exec是直接进入容器,修改会对原容器产生影响,run会新建一个一样的容器,修改不会对原容器产生影响。 在使用这两个命令时,container_name是容器的name,不是id,不过使用docker- compose.yml模板文件,发现container_name是模板中service中的服务名


Comments

Content