docker - 如何在不执行指定命令的情况下启动 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
解决方案
每当你停止然后停止容器时,它总是会运行 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"
推荐阅读
- javascript - 脚本标签内带有占位符的淘汰赛绑定
- android - 为什么 Recyclerview 适配器 onBindViewHolder 被多次调用?
- asp.net - ASP.NET:模型验证错误 - 错误请求
- c++ - 没有返回值的整数函数
- python - 带 time.sleep 的 While 循环
- angular - Angular中输入字段的通用组件
- javascript - React 测试库:输入表单上的 fireEvent 更改时,给定元素没有值设置器
- javascript - 在字符串中使用新行
- c# - C#,字节数组,避免内存碎片
- android - 如何为android的布局组件添加灵活的大小