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

  • A+
所属分类:应用工具

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中的服务名

  • 公众号
  • 扫一扫
  • weinxin
  • 打赏
  • 扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: