如何在不执行指定命令的情况下启动Docker容器

时间:2020-06-29 11:34:28

标签: docker

我制作了一个Docker容器充当Jupyter服务器

docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser"

是否可以在不执行指定命令的情况下启动停止的容器? 在启动时,它会在尝试创建现有目录时停止。

kosh@LinuxPC:~$ docker ps -a --no-trunc
CONTAINER ID                                                       IMAGE               COMMAND                                                                                                                                                                                                    CREATED             STATUS                     PORTS               NAMES
bb9ff79baf4b2a18289e14338cecdd3cdfa3bbe2a84cba0a63430de1e624b769   condaim             "/bin/bash -c '/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root'"   24 hours ago        Exited (1) 2 minutes ago                       jovial_clarke

kosh@LinuxPC:~$ docker start -i jovial_clarke
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... done

# All requested packages already installed.

mkdir: cannot create directory ‘/opt/notebooks’: File exists

1 个答案:

答案 0 :(得分:1)

无论何时停止然后停止容器,它都将始终运行entry命令。因此,所有您在首次启动容器时都要更改命令。

因此,如果该目录不存在,则应该创建逻辑目录(逻辑目录应该为mkdir -p /opt/notebooks,因为错误来自此命令。

因此请相应地更新docker run命令,它将在下次启动时起作用。

docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir -p /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser"