当前位置:   article > 正文

Docker 进入容器方式详解

进入容器

  Docker容器可以理解为一个简化版的Linux系统,包括root用户权限、进程空间、用户空间等,既然是操作系统,就可以进入到容器内部,完成Linux相关的操作。本文介绍几种目前比较常用的进入Docker容器的方式。

  docker attch

  docker attach应该算是一个已经过时的命令,但最新的docker版本仍提供其功能,下面来演示如果使用其进入到已启动容器中。

  1. 使用docker pull nginx拉取nginx镜像,通过docker images可以查看镜像是否已经拉取到本地。

在这里插入图片描述

  2. 使用attach进入容器,则要求启动容器时必须存在-it/bin/bash参数,用以进行终端共享,示例命令如下:

docker run --name securititnginx -it -d -p 80:80 nginx:latest /bin/bash
  • 1

  容器启动后,查看容器运行状态。

在这里插入图片描述

  3. 最后使用attach命令进入容器,然后可以像在系统内一样进行需要的操作。

在这里插入图片描述

  进入到容器后,进行了系列操作,cd到了Nginx的html静态资源目录,可以看到的是,容器本身提供的功能十分精简,像最常用的ll命令都未安装,如果需要的话,根据个人需要安装即可。

  4. 容器中有很多中方式可以退出,例如:Ctrl+CCtrl+DCtrl+Q

退出命令命令描述
Ctrl+C退出容器,同时会关闭容器
Ctrl+D与exit同义,退出容器,同时会关闭容器
Ctrl+Q退出容器,恢复到主机终端,不会关闭容器

  5. 注意:需要着重注意的是,attach命令十分依赖容器的启动方式,若是启动时没有-it/bin/bash参数,那么会出现如下的卡死问题。

在这里插入图片描述

  docker exec

​  1. 使用docker pull nginx拉取nginx镜像,通过docker images可以查看镜像是否已经拉取到本地。

在这里插入图片描述

  2. 使用任意命令启动容器:

docker run --name securititnginx -d -p 80:80 nginx:latest
  • 1

  容器启动后,查看容器运行状态。

在这里插入图片描述

  3. 最后使用exec命令进入容器,此后即可正常对容器进行操作,与attach一样。

在这里插入图片描述

  4. 容器中可以使用Ctrl+D或直接输入exit退出容器。

  ssh 连接

  1. 使用docker pull centos拉取nginx镜像,通过docker images可以查看镜像是否已经拉取到本地。

在这里插入图片描述

  2. 运行如下命令启动容器,启动后需要额外的终端用于进入容器。

docker run --name securititssh -it -p 10022:22 --privileged centos:7 /usr/sbin/init
  • 1

在这里插入图片描述

  注意: 需要着重说明的是,启动时必需--privileged/usr/sbin/init参数,否则在容器内使用systemctl命令时会出现如下的错误(Failed to get D-Bus connection: Operation not permitted):

在这里插入图片描述

  3. 开启一个新的终端,在终端使用docker exec 命令进入容器内部。

docker exec -it e1c61b8a9cec /bin/bash
  • 1

在这里插入图片描述

  在容器内运行如下命令,安装SSH相关服务。

yum -y install passwd openssl openssh-server
  • 1

在这里插入图片描述

  运行如下命令,开启容器的SSH服务同时设置用户密码。

# 启动SSH服务.
systemctl start sshd
# 设置SSH开启启动.
systemctl enable sshd
# 设置用户密码.
passwd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

  4. 通过SSH连接容器时,IP是宿主机器的IP地址,PORT是容器启动时的映射端口,用户名和密码是之前在容器内设置的。

  · 可以使用如下命令通过SSH连接到容器。

ssh -p 10022 root@192.168.20.50
  • 1

在这里插入图片描述

  · 还可以通过Xshell等工具进行连接,只需按照正常配置IP、PORT以及口令密码即可。

在这里插入图片描述

  nsenter 连接

  nsenter是一个命令行工具,用来进入到进程的linux namespace中。

  docker提供了exec命令可以进入到容器中,nsenter具有跟docker exec差不多的执行效果,但是更底层,特别是docker daemon进程异常的时候,nsenter的作用就显示出来了,因此可以用于排查线上的docker问题。

  本文演示使用的是Centos7,Centos7默认安装了nsenter命令,可以直接使用。

# 查看容器对应的进程号.
docker inspect b564267a6ca8 -f '{{.State.Pid}}'
# 使用nsenter进入到容器.
nsenter --target 6554 --mount --uts --ipc --net --pid
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

  若是使用的Linux版本过低,没有安装nsenter,可以自行搜索安装。

  总结

  当下载了镜像,启动了容器,此时进入容器就成了下一步需要做的事情,本文提供了进入容器的四种方式的详细演示,可以提供简单的参考。

  若文中存在错误和不足,欢迎指正!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/502866
推荐阅读
相关标签
  

闽ICP备14008679号