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