我有一个Docker容器,我只需要在Ubuntu上安装Docker,然后做:
sudo docker run -i -t ubuntu /bin/bash
我立即开始安装Java和其他一些工具,花了一些时间使用它,并停止了容器
exit
然后我想增加一个体积,并意识到这并不像我想象的那么简单。如果我使用sudo docker -v /somedir run…然后我就得到了一个新的容器,所以我必须安装Java,并做我之前已经做过的事情,只是为了得到一个带有挂载卷的容器。
所有关于从主机挂载文件夹的文档似乎都暗示,挂载卷可以在创建容器时完成。因此,避免从头重新配置新容器的唯一选择是将现有容器提交到存储库,并在挂载卷时将其用作新容器的基础。
这确实是向现有容器添加卷的唯一方法吗?
您可以停止并删除容器,在启动脚本中追加现有卷,并从映像重新启动。如果已经存在的现有分区确实保留了数据,那么您应该不会遇到任何信息丢失的情况。这同样适用于Dockerfile和Docker composer。
Eg (solr图像)。
(初始脚本)
#!/bin/sh
docker pull solr:8.5
docker stop my_solr
docker rm solr:8.5
docker create \
--name my_solr \
-v "/XXXX/docker/solr/solrdata":/var/solr \
-p 8983:8983 \
--restart unless-stopped \
--user 1000:1000 \
-e SOLR_HEAP=1g \
--log-opt max-size=10m \
--log-opt max-file=3 \
solr:8.5
docker cp /home/XXXX/docker/solr/XXXXXXXX.jar my_solr:/opt/solr/contrib/dataimporthandler-extras/lib
docker start my_solr
文件与第二卷
#!/bin/sh
docker pull solr:8.5
docker stop my_solr
docker rm solr:8.5
docker create \
--name my_solr \
-v "/XXXX/docker/solr/solrdata":/var/solr \
-v "/XXXX/backups/solr_snapshot_folder":/var/solr_snapshots \
-p 8983:8983 \
--restart unless-stopped \
--user 1000:1000 \
-e SOLR_HEAP=1g \
--log-opt max-size=10m \
--log-opt max-file=3 \
solr:8.5
docker cp /home/XXXX/docker/solr/XXXXXXXX.jar my_solr:/opt/solr/contrib/dataimporthandler-extras/lib
docker start my_solr
在我不得不寻找这个问题很长一段时间后,使用Docker Windows容器的一个注意事项!
摘要:
Windows 10
Docker Desktop(最新版本)
使用Docker Windows容器镜像microsoft/mssql-server-windows-developer
问题:
我想挂载一个宿主字典到我的windows容器。
解决方案部分描述如下:
创建docker容器
docker run -d -p 1433:1433 -e sa_password=<STRONG_PASSWORD> -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer . exe
进入容器中的shell命令
docker exec -it <CONTAINERID> cmd.exe
创建DIR
姆克迪尔·迪尔·芒特
停止容器
docker容器停止<CONTAINERID>
提交集装箱
码头工人提交<CONTAINERID> <NEWIMAGENAME>
删除旧容器
docker容器rm <CONTAINERID>
创建带有新映像和卷挂载的新容器
docker run -d -p 1433:1433 -e sa_password=<STRONG_PASSWORD> -e ACCEPT_EULA=Y -v C:\DirToMount:C:\DirForMount <NEWIMAGENAME> . C:\DirToMount
在这之后,我解决了这个问题在docker窗口容器。