一、问题

1.1 进入容器

//进入容器语法
docker exec -it  容器标识 /bin/bash
注:容器标识为容器名(Names)或容器ID(Container ID)或容器ID(Container ID)前几位

//进入容器boot3-01-demo
//这里容器标识使用Names,即boot3-01-demo
docker exec -it  boot3-01-demo /bin/bash

参数说明:
-i: 交互式操作。
-t: 终端。
boot3-01-demo: boot3-01-demo 容器的Names。
/bin/bash:放在容器后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

1.2 实际操作报错

Welcome to Alibaba Cloud Elastic Compute Service !

[root@freedom ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS        PORTS     NAMES
94dfd57581c3   880f7a72ff56   "java -Xmx128m -Djav…"   19 hours ago   Up 19 hours             boot3-01-demo
[root@freedom ~]# docker exec -it boot3-01-demo /bin/bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

在这里插入图片描述
这里报错

OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

二、解决

2.1 解决

一般情况下,进入容器使用的都是docker exec -it 容器标识 /bin/bash ,这里需要使用docker exec -it 容器标识 /bin/sh

//进入容器语法
docker exec -it  容器标识 /bin/sh
注:容器标识为容器名(Names)或容器ID(Container ID)或容器ID(Container ID)前几位

//进入容器boot3-01-demo
//这里容器标识使用Names,即boot3-01-demo
docker exec -it  boot3-01-demo /bin/sh

截图如下

在这里插入图片描述

2.2 /bin/bash 与 /bin/sh

/bin是个快捷方式:
在这里插入图片描述
/bin/bash
在这里插入图片描述
/bin/sh
在这里插入图片描述

2.3 docker attach

补充-另一种进入容器的命令: docker attach 容器标识

注意:
//使用docker attach命令来进入容器,如果从这个容器退出,会导致容器的停止。
docker attach 容器标识

//使用docker exec -it  容器标识 /bin/bash 或者 docker exec -it  容器标识 /bin/sh命令来进入容器,如果从这个容器退出,就不会导致容器的停止。

注:容器标识为容器名(Names)或容器ID(Container ID)或容器ID(Container ID)前几位

所以推荐使用 docker exec -it 这种方式,进入容器。

三、参考

详细过程与深入学习可以参考下面几篇博客
Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process详解
Shell编程:/bin/bash和/bin/sh的区别
Shell编程: shell脚本5种执行方式 | 脚本不同的执行方法和区别
Docker 容器使用

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐