docker container无法修改环境变量的处理办法

在维护公司一个(即将)烂尾的产品,想把我们公司的提供演示的docker移植到客户的服务器里...

改完conf文件之后重启docker发现其中一个container频繁重启

使用sudo docker logs -f msic-html5之后发现频繁报错,意思是连不上mongodb服务器

 问题是我该改的配置文件都改了,以前没出现过这个问题啊...

这个问题带带拉拉查了一周没发现原因,昨天我docker inspect 的时候发现这个频繁重启的container里的环境变量中的mongodb链接是老的

问题可能出现在这里。所以我sudo docker run xx -e修改配置,结果失败

查资料之后发现可以修改配置文件

【docker】修改容器启动配置参数_渐暖°的博客-CSDN博客_docker修改启动参数

按照它修改之后重启container之后发现还是频繁重启,回头看一眼配置文件,发现配置文件被改回去了。

接着百度之后发现这个丁日东西需要先把docker关闭再修改才能生效

docker修改未能成功启动的容器中的配置文件_<Michael>的博客-CSDN博客

  1. 注意:在进行操作之前一定要先停掉docker服务,否则改动不会生效。修改之后再启动docker服务就可以了。

systemctl stop docker
sudo su
cd /var/lib/docker/containers/xxxx
vim config.v2.json
systemctl start docker

大概就这样,最后成功糊弄完客户....

最后想了一下这个问题的原因

应该和我之前修改ip的时候的目录有关

之前直接在/home/user目录里用sed命令修改ip

现在是在/home/user/deploy里用sed修改,导致只把/deploy里的修改了,其他目录没动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker环境变量是在Docker容器中设置的变量。这些变量可以在容器内部使用,也可以在Dockerfile或docker-compose.yml文件中设置。以下是一些关于Docker环境变量的常见问题和答案: 1. 如何在Dockerfile中设置环境变量? 在Dockerfile中,您可以使用ENV指令设置环境变量。例如: ``` ENV MY_VAR=my_value ``` 2. 如何在docker-compose.yml文件中设置环境变量? 在docker-compose.yml文件中,您可以使用environment关键字设置环境变量。例如: ``` services: my_service: image: my_image environment: MY_VAR: my_value ``` 3. 如何在容器内部使用环境变量? 在容器内部,您可以使用$符号和变量名来引用环境变量。例如: ``` echo $MY_VAR ``` 4. 如何在运行容器时设置环境变量? 使用-e选项在运行容器时设置环境变量。例如: ``` docker run -e MY_VAR=my_value my_image ``` 5. 如何查看容器中的环境变量? 使用docker exec命令进入容器,并使用env命令查看环境变量。例如: ``` docker exec -it my_container bash env ``` ### 回答2: Docker环境变量是在容器内部运行时可以使用的变量。它们是在创建和运行容器时设置的,用于配置容器的各种参数和选项。 首先,环境变量可以用来指定容器应该使用的镜像版本。通过设置`IMAGE_VERSION`环境变量为特定的版本号,可以确保容器使用正确的镜像版本。 其次,环境变量可以用于配置容器的运行参数。例如,可以设置`PORT`环境变量容器内部应用程序监听的端口号,使得容器可以通过该端口与外部通信。 此外,环境变量还可以用于传递应用程序所需的其他配置信息。例如,可以设置`DB_USERNAME`和`DB_PASSWORD`环境变量,以指定容器连接数据库时所需的用户名和密码。 使用环境变量可以提高容器的可移植性和灵活性。通过修改环境变量的值,可以在容器之间轻松切换所使用的配置,而不需要对应用程序的源代码进行修改。此外,环境变量也使得容器的配置变得可配置化,便于在不同的环境中部署相同的容器。 要在Docker容器中使用环境变量,可以在Dockerfile中使用`ENV`关键字来定义环境变量,或者在运行容器时使用`-e`选项来设置环境变量的值。 总而言之,Docker环境变量是一种非常实用的配置机制,可以灵活地配置容器的参数和选项,提高容器的可移植性和可配置性。 ### 回答3: Docker环境变量是一种在Docker容器内定义和使用的变量。它们可以用来配置容器的特定行为,也可以在容器之间共享信息。下面是关于Docker环境变量的一些重要信息。 首先,Docker环境变量可以在构建镜像时定义,也可以在启动容器时传递。当我们在构建镜像时定义环境变量时,它们将被固定在镜像中,以供容器在运行时使用。这样可以确保在每个容器实例中环境变量的一致性。 其次,Docker环境变量可以用于配置容器的一些重要参数。例如,我们可以使用环境变量指定数据库的连接字符串、设置服务器的IP地址和端口号,或指定应用程序的日志级别等。这样,我们可以通过修改环境变量的值,而无需重新构建和部署镜像,来调整容器的行为。 此外,Docker环境变量可以在不同容器之间传递信息。例如,我们可以在一个容器中定义一个环境变量,并将其传递给另一个容器,以便共享某些重要数据。这种方式可以帮助我们实现容器间的数据交流和协同工作。 最后,Docker环境变量也具有一定程度的安全性。我们可以通过将敏感信息(如密码和API密钥)存储为环境变量,而不是直接硬编码在容器中,来提高应用程序的安全性。这样,我们可以更好地保护这些敏感信息,避免它们意外泄漏。 总之,Docker环境变量是在Docker容器中定义和使用的变量,用于配置容器行为、共享信息和提高应用程序的安全性。它们提供了一种灵活和方便的方式来管理容器的特定需求和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值