如果我已经有一个 docker 会话正在运行,有什么方法可以增加共享内存吗?
docker run -it --shm-size=13g dockertag /bin/bash
中所示执行或更改 docker-compose.yml 文件。
但是,如果我已经运行了 docker 会话,是否仍然可以这样做?(我有一个进程正在运行并且不想停止它)
docker build -f ./Dockerfile -t <tag> .
docker tag <tag> <repo>
docker push <repo>
Run Code Online (Sandbox Code Playgroud)
如果我这样做了docker run -it --shm-size=13g <tag> /bin/bash
,我就会进入码头。在(退出泊坞窗)之后执行docker push此操作不会产生任何效果。
我正在尝试解决 pytorch 上的这些错误:
请原谅我对docker的理解。我是它的新手。
但是如果我已经运行了一个 docker 会话,是否仍然可以这样做
答案是否定的 ,也是 肯定的。
答案是肯定的,因为如果您在创建容器时创建了卷,则这是可能的。然后,您可以增加已安装的大小/dev/shm,这些更改将反映在容器中,而无需重新启动
为了演示,在下面的示例中/dev/shm,我的机器被安装/dev/shm在容器中。
/dev/shm首先,让我们检查一下我的机器上的大小
anon@anon-VirtualBox:~$ df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.9G 48M 2.9G 2% /dev/shm
Run Code Online (Sandbox Code Playgroud)
现在让我们创建一个 docker 容器作为/dev/shm容器中的卷安装并检查容器的大小/dev/shm
创建容器:
anon@anon-VirtualBox: docker run -d -v /dev/shm:/dev/shm bash sleep 100000
bdc043c79cf8b1ba64ee8cfc026f8d62f0b609f63cbca3cae9f5d321fe47b0e0
Run Code Online (Sandbox Code Playgroud)
检查容器中 /dev/shm 的大小:
anon@anon-VirtualBox: docker exec -it bdc043c df -h /dev/shm
Filesystem Size Used Available Use% Mounted on
tmpfs 2.9G 47.9M 2.8G 2% /dev/shm
Run Code Online (Sandbox Code Playgroud)
您可以看到容器的尺寸与我的机器上的尺寸相匹配,这验证了我们已正确安装/dev/shm到容器中。
/dev/shm现在我将增加我的机器上的大小
anon@anon-VirtualBox:~$ sudo mount -o remount,size=4G /dev/shm
anon@anon-VirtualBox:~$ df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 4.0G 56M 4.0G 2% /dev/shm
Run Code Online (Sandbox Code Playgroud)
现在我们可以验证容器是否已调整(无需重新启动)
anon@anon-VirtualBox:~$ sudo docker exec -it bdc043c79cf8 df -h /dev/shm
Filesystem Size Used Available Use% Mounted on
tmpfs 4.0G 55.9M 3.9G 1% /dev/shm
Run Code Online (Sandbox Code Playgroud)
答案对你来说是否定的,因为你已经创建了一个容器。/var/lib/docker/containers/<container_id>/hostconfig.json可以通过调整来修改容器的配置ShmSize,但这需要重新启动容器才能生效。那时,创建新容器并使用指定新大小没有区别docker run..
我把这个运行命令放在哪里?
docker build -f ./Dockerfile -t <tag> .
docker tag <tag> <repo>
docker push <repo>
Run Code Online (Sandbox Code Playgroud)
docker build:构建 docker 镜像
docker tag:为图像提供一个可选标签(注意 - 这是多余的,因为您在前面的命令中指定了标签)
docker push:这会将图像推送到远程注册表(图像存储库,即https://hub.docker.com/)
这些步骤都是相互独立的,并且在需要用于其目的时使用。可以选择对图像进行标记,就像可以选择将图像推送到注册表一样。运行 docker 容器的唯一要求是存在用于运行容器的映像,因此您在命令中指定映像名称docker run。因此,为了满足您的答案,docker run 命令将在您构建映像之后执行。值得注意的是,默认情况下,当您运行时,docker run bash它会在本地查找该映像,如果它不存在(默认情况下),它将尝试从 docker hub 中提取该映像,即https://hub.docker.com /_/bash。这就是为什么从全新安装的 docker 开始,您就可以运行docker run bash并且无需先构建 bash 映像即可运行。你的输出看起来类似于
docker run bash
Unable to find image 'bash:latest' locally
latest: Pulling from library/bash
050382585609: Pull complete
7bf5420b55e6: Pull complete
1beb2aaf8cf9: Pull complete
Digest: sha256:845d500de4879819b189934ec07de15e8ff8de94b3fd16d2744cbe7eb5ca3323
Status: Downloaded newer image for bash:latest
e4c594907b986af923afe089bdbbac057712b3e27589d12618b3d568df21d533
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10141 次 |
| 最近记录: |