如何在 运行 之后获得对 docker 容器的 bash 访问权限

How to gain bash access to a docker container after its ran

我的 docker 文件如下所示:

FROM my/ubuntu:latest

RUN apt-get update \
 && apt-get install -y build-essential cmake pkg-config wget \
 libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev \
 libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
 libatlas-base-dev gfortran \
 python \
 python2.7-dev \
 && wget https://bootstrap.pypa.io/get-pip.py \
 && python get-pip.py \
 && pip install numpy

我构建的镜像是这样的

docker build -t my/ocr:latest docker-ocr

我运行这样的图

docker run -d --name ocr my/ocr
6cb4d2408ced5b5b3c68f3f5b236784c2ec3ba780592104c7a7651620bd3bd75

但是,当我尝试 bash 进入容器时 - 它说它不是 运行ning。之所以要bash进去是因为我要安装OpenCV。所以我想先 bash 进入它手动执行命令以确保它们正常工作,以便我可以将它们放入我的 docker 文件中。

▶ docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                     PORTS                    NAMES
6cb4d2408ced        my/ocr            "/bin/bash"              9 seconds ago       Exited (0) 9 seconds ago                            ocr
74c1f48e98ad        my/tomcat:7.0     "/run.sh"                2 days ago          Up 2 days                  0.0.0.0:8080->8080/tcp   tomcat7
db3f66a2d97e        my/mysql:latest   "/sbin/entrypoint.sh "   3 days ago          Up 3 days                  0.0.0.0:3306->3306/tcp   mysql

因为容器不是 运行ning 我似乎无法 bash 进入它:

▶ docker exec -it ocr bash
Error response from daemon: Container ocr is not running

问题

如何获得 shell 访问此容器的权限,以便我可以 bash 使用

进入其中

docker exec -it ocr bash

您可以使用

启动容器
docker run -it --name ocr my/ocr bash

直接得到一个shell。

如果你不想这样,你可以用

启动你的容器
docker run -d --name ocr my/ocr sleep infinity

然后执行到您的容器中:

docker exec -it ocr bash