如何保持运行命令参数给定的docker容器设置?

如何保持运行命令参数给定的docker容器设置?,docker,docker-container,docker-run,Docker,Docker Container,Docker Run,我使用docker run命令+许多参数从docker映像启动容器,如: docker run -d --name=ubu2 --restart=always --pids-limit 400 --memory=3g --memory-swap=6g --cpus="2.0" -p 127.0.0.1:8585:8585 -v /apps:/apps ubuImage 当我执行 docker inspect ubu2 我可以在容器的描述中正确地看到我的设置 当我使用doc

我使用
docker run
命令+许多参数从docker映像启动容器,如:

docker run -d --name=ubu2 --restart=always --pids-limit 400 --memory=3g --memory-swap=6g --cpus="2.0" -p 127.0.0.1:8585:8585 -v /apps:/apps ubuImage
当我执行

docker inspect ubu2
我可以在容器的描述中正确地看到我的设置

当我使用docker restart ubu2重新启动容器时,我仍然可以看到我的设置。这是预期的行为吗?如果没有run命令参数中的设置,容器不应该重新启动吗

一般来说,在容器定义中保留此类设置的最佳方法是什么?
更多-如果我想更改其中任何一个的值,比如说内存为4GB-什么是合适的方法<代码>docker容器更新?

docker容器包装单个进程
docker restart
重新启动流程,而不重新创建容器环境;这就是为什么容器设置在容器重新启动时被保留的原因

一般来说,我通常不会麻烦停止和启动容器;只需删除并重新创建它们。那么你肯定会从一个干净的环境开始

docker stop ubu2
docker rm ubu2
docker run-d--名称ubu2。。。
如果您使用了一组一致的
docker run
选项,则可以将它们放在shell脚本中(与任何其他shell命令一样),或者使用docker Compose之类的工具将一组容器选项封装在文件中。您显示的命令可以使用以下编写语法编写:

#docker-compose.yaml
版本:“2.4”#v3不支持单容器资源约束
服务:
ubu2:
#建造:。#如果你通常是“docker build”这个形象
image:ubuImage#如果给定了`build:`则不需要
重新启动:始终
pids_限值:400
内存限制:4g
memswap_限值:6g
CPU:2.0
端口:
- 127.0.0.1:8585:8585
卷数:
-/apps:/apps

如果运行
docker compose up-d
,它将创建一个与此模板匹配的容器(在后台)。如果您更改其中一个值,并再次运行
docker compose up-d
,它将根据需要删除并重新创建容器,以更新设置。

感谢您提供的信息性答案!但是,建议的方法与我的用例不匹配。我需要相同的容器,因为里面的应用程序不是无状态的,其次-我以编程方式提出(创建)大多数容器,使用docker java api,docker compose对我没有多大用处。但是,谢谢!我非常喜欢这个答案!在某些常见情况下,必须删除容器;例如,如果需要更新容器正在运行的映像,或者更改进程的环境变量。围绕这一点进行规划,并确保容器的数据以某种形式存在于卷中。如果您在代码中有一个路径,可以始终使用相同的选项创建容器(并且您没有反复手动键入
docker run
),那么这将满足我建议编写的需求。