更改容器分区的磁盘空间

时间:2017-04-16 09:52:11

标签: docker

我使用了官方泊坞页上提到的命令。

https://hub.docker.com/r/continuumio/miniconda3/

官方指挥:

docker run -i -t -p 8888:8888 continuumio/miniconda3 /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"

我在容器中安装了tmp文件夹并将其用作主目录,因为由于某种原因,根分区只分配了10 GB的磁盘。

docker run -i -t -p 8888:8888 -v /tmp/:/tmp/ continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && cd /tmp/ && /opt/conda/bin/jupyter notebook --ip='*' --port=8888 --no-browser --allow-root"

我想知道是否有更好的方法可以做到这一点。根分区的大小应与主机硬盘容量相同。

更新

我正在使用shizhz建议的Dockerfile。但如果我需要它,这里是正确的命令:

docker run -i -t -p 8888:8888 -v /tmp:/tmp continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && cd /tmp/ && /opt/conda/bin/jupyter notebook --notebook-dir=/tmp --ip='*' --port=8888 --no-browser --allow-root"

2 个答案:

答案 0 :(得分:1)

默认情况下,Docker会分配10G的数据,而不管主机的大小。

这个领域最近有一些发展,而docker 3.18.0拥有最好的处理方式。 docker documentation中提供了相同的详细信息。

根据文档,您必须使用以下命令序列来增加容器/图像的基本大小。

  • 请注意上述命令是不可逆转的操作。一旦你将尺寸设置为50G,你就不可能减少它。
  • 此外,此分区目前仅适用于ext4分区。因此,您的主机应具有ext4分区,其中docker正在运行并从中创建容器/映像。 $ sudo dockerd --storage-opt dm.basesize=50G
  • 要使更改生效,您必须运行以下命令: $ sudo service docker stop $ sudo rm -rf /var/lib/docker $ sudo service docker start

另外,请注意,这将影响您提取/构建的所有未来图像以及您创建的未来容器。现有容器不受此命令的影响。因此,您可能需要重新创建图像并重新创建容器。

答案 1 :(得分:1)

这不是关于您的磁盘分区,但我认为您在启动shell中做了太多事情,我建议您定义自己的Dockerfile并构建自己的映像。我使用以下Dockerfile进行测试:

FROM continuumio/miniconda3

RUN /opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks

VOLUME /opt/notebooks
EXPOSE 8888
WORKDIR /opt/notebooks

CMD ["/opt/conda/bin/jupyter", "notebook", "--notebook-dir=/opt/notebooks", "--ip='*'", "--port=8888", "--no-browser", "--allow-root"]

然后建立自己的形象:

docker build -t jupyter .

之后您可以轻松地开始服务,如:

docker run -d -v `pwd`/notebooks:/opt/notebooks -p 8888:8888 jupyter

当然,您可以将主机上的任何目录挂载到容器内的VOLUME /opt/notebooks