首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不运行容器的情况下向容器发送命令以更改文件?

如何在不运行容器的情况下向容器发送命令以更改文件?
EN

Stack Overflow用户
提问于 2021-05-07 06:57:28
回答 2查看 195关注 0票数 0

我有一个容器Postgres,它在它的Dockerfile中启动一个docker-entrypoint.sh,在该文件中有一个命令,我想使用这个命令删除它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i 's/exec "$@"//g' docker-entrypoint.sh

目标是能够使用修改后的docker-entrypoint.sh (没有exec "@")运行容器。

如何使用之前启动的命令运行容器?我使用了另一种方法,使用另一个没有“exec”@“”的shell文件重写docker-entrypoint.sh,然后使用以下命令挂载它以运行容器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -v $(pwd):/docker-entrypoint-initdb.d -e POSTGRES_PASSWORD=password \
     --entrypoint="docker-entrypoint-initdb.d/docker-entrypoint-custom.sh" postgres postgres

我确信在bash中运行命令之前还有更好的方法,然后运行我自己的命令。

我试过这样的方法,但不起作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --rm -v $PWD:/docker-entrypoint-initdb.d -e POSTGRES_PASSWORD=password  --entrypoint=/bin/bash postgres sed -i 's/exec "$@"//g' docker-entrypoint.sh &&  postgres docker-entrypoint.sh
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 07:08:36

我使用了另一种方法,用另一个没有“exec”@“”的shell文件覆盖docker-entrypoint.sh。

好吧,你正在挂载一个完整的目录,你有一个入口点的副本。只需挂载一个文件,并在文件中进行修改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# docker-entrypoint-custom.sh
#!/bin/sh
# do the modification
sed -i 's/exec "$@"//g' /docker-entrypoint.sh
# Just run it
/docker-entrypoint.sh "$@"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker run --rm \
       -v $PWD/docker-entrypoint-custom.sh:/docker-entrypoint-custom.sh:ro \
       -e POSTGRES_PASSWORD=password \
       --entrypoint=/docker-entrypoint-custom.sh \
       postgres postgres

另一种方法是使用修改后的入口点构建另一个容器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Dockefile....
FROM postgres
RUN sed -i 's/exec "$@"//g' /docker-entrypoint.sh
票数 1
EN

Stack Overflow用户

发布于 2021-05-07 08:56:02

postgres映像所做的默认事情是运行postgres。如果希望它运行其他命令,只需将该命令放在docker run命令的末尾即可。不要担心编辑入口点脚本。

为了调试目的,需要做的一件非常典型的事情是启动一个交互式shell,而不是普通的服务器进程;然后,您可以查看创建的文件系统,看看发生了什么。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --rm -it \
  -v $PWD:/docker-entrypoint-initdb.d \
  -e POSTGRES_PASSWORD=password \
  postgres \
  /bin/bash

这到底是怎么回事?如果您查看图像的Dockerfile,您会注意到它包含一个ENTRYPOINT和一个CMD

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["postgres"]

当你同时拥有两样东西的时候,ENTRYPOINTexec "$@"行用另一个由位置参数组成的命令替换入口点脚本;也就是说,它将docker-entrypoint.sh替换为postgres。在命令行中覆盖CMD很容易,就像我前面所做的那样,但是替换ENTRYPOINT更困难。

这就形成了一种通用模式,即使用ENTRYPOINT进行首次初始化,然后使用exec "$@"运行CMD

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/sh
# I am docker-entrypoint.sh
# Invoke me in a Dockerfile as (must use JSON-array syntax)
#   ENTRYPOINT ["/path/to/entrypoint.sh"]

# Do startup-time initialization, like creating a database or
# setting environment variables for the main process
...

# Then launch the CMD
exec "$@"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67437273

复制
相关文章
Windows+intellij ide
1.访问http://www.python.org/download/下载最新的python版本 2.下载,解压
py3study
2020/01/07
3870
IntelliJ IDEA 还能画思维导图,果然最强 IDE!
当然这得借助 IDEA 的 UML 插件,因为它本身也是一个 UML 图,所以这篇就从 UML 图开撕,看 IDEA 怎么画思维导图,顺便带大家了解下什么是 UML 图。
Java技术栈
2021/03/09
2.4K0
IntelliJ IDEA 还能画思维导图,果然最强 IDE!
PYPL 6 月 IDE 指数榜:IntelliJ 追上 Sublime Text
PYPL 6 月的 IDE 指数榜单 Top IDE index 已经发布了,本月排名前 3 位的 IDE 与上个月相同,分别是 Visual Studio、Eclipse 和 Android Studio,前 10 名中,Xcode 被 PyCharm 反超,IntelliJ 追上 Sublime Text,其它 IDE 名次不变。从图表中我们可以明显地看到, Xcode 被标了 4 个表示下降的红色箭头,走势比上个月的 3 个红箭头更加低迷。
一觉睡到小时候
2019/07/04
4740
PYPL 6 月 IDE 指数榜:IntelliJ 追上 Sublime Text
IntelliJ IDEA 2022.2 Mac中文版 Mac Java IDE开发
IntelliJ IDEA 2022.2 Mac版本已发布,支持M1芯片机型。IntelliJ IDEA 2021是全球最受欢迎的Java开发工具,绝大部分的Java开发者都在使用idea 2022 mac。idea 2021具有强大的功能,易用的界面布局,完善的开发工具支持,无论你是刚入门的Java开发新手,还是拥有丰富Java开发经验的高级Java开发人员,IDEA 2021 mac都最必备的Java开发工具。
浅巷墨漓cc
2022/07/30
9580
IntelliJ插件开发-京东工程师教你改造你的IDE
王帅廷,京东 Android高级开发工程师,6年以上开发经验,对设计框架有着深刻的认识,负责京东商城研发工具的开发,设计并完成了多个IntelliJ插件的开发工作。
京东技术
2018/07/30
3.2K1
IntelliJ插件开发-京东工程师教你改造你的IDE
Struts1 增删改查
本篇文章介绍如何使用Struts1进行增删改查,仅是对自己学习的记录,并没有深入分析每个模块(不重复造轮子O(∩_∩)O~)。
Yano_nankai
2018/10/08
9710
Struts1 增删改查
struts2和struts1认识
Struts 2框架本身可以大致分3部分:核心控制器FilterDispatcher、业务总监Action与用户实现企业业务逻辑组件。
全栈程序员站长
2022/07/06
5950
Struts1 和 Struts2 对比
参考链接:http://blog.csdn.net/john2522/article/details/7436307
Yano_nankai
2018/10/08
5000
Struts1 和 Struts2 对比
错误记录 | Android Studio Start Failed com.intellij.ide.plugins.PluginManager
warning: 这篇文章距离上次修改已过613天,其中的内容可能已经有所变动。
Ranlychan
2023/03/05
4780
Python IDE与Tensorflow环境配置
Python的IDE有很多,推荐安装Pycharm,安装包也就300M左右。也是jetbrains出品。拥有专业版和社区版。其中专业版是需要收费的,可以在网上搜破解的方法。如果不需要太强大的功能,可以使用社区版,社区版是免费的。
None_Ling
2019/02/25
1.2K0
Python IDE与Tensorflow环境配置
【译】IntelliJ IDEA 2023.2 最新变化——JetBrains IDE 中的 AI 助手
本周所有基于 IntelliJ 的 IDE 和 .NET 工具的 EAP 版本都包含一个主要新功能:AI Assistant。本博文重点介绍我们基于 IntelliJ 的 IDE,并且即将推出专门的 .NET 工具博文。
葡萄城控件
2023/10/16
7390
【译】IntelliJ IDEA 2023.2 最新变化——JetBrains IDE 中的 AI 助手
Clojure系列 - 环境与IDE配置
看七周七并发这本书,对Clojure产生了浓厚的兴趣。写篇日志记录下成长以及“成长的烦恼”。 使用Clojure,必须先准备好工具。首先,我们需要搭建Clojure的构建工具 - lein。Clojure一大特性就是REPL(Read-Evaluate-Print Loop),代码输入,立即执行,不用编译。可以通过lein repl来启动REPL。
干货满满张哈希
2021/04/12
1.8K0
Clojure系列 - 环境与IDE配置
基于 IntelliJ 的 IDE 功能路线图出来了,终于要支持中文!
上个月 JetBrains 发布了 IntelliJ 平台 2020 年路线图,现在作为 2020 年规划中的另一部分,JetBrains 又发布了基于 IntelliJ 的 IDE 2020 年的功能路线图。
芋道源码
2020/02/20
3880
基于 IntelliJ 的 IDE 功能路线图出来了,终于要支持中文!
Java 开发环境与IDE 配置与安装教程
1. Java开发工具包(JDK)。 2. 一款Java开发工具,IDEA,当然你也可以使用VSCODE。 这里提供JDK和IDEA的资源 链接:https://pan.baidu.com/s/1VojmGOzhPM5A5hwRbUWHKA 提取码:83tl
泰坦HW
2020/07/22
2.1K0
Java 开发环境与IDE 配置与安装教程
原 Intellij IDEA安装与启动
Intellij IDEA安装与启动 为了了解Intellij Idea,你可以下载和安装他的免费试用版本。试用版本只有30天可用,因此,你需要获取和注册一个授权码。 Intellij Idea版本 这里有两个版本:社区版和旗舰版。 社区版免费并且开源,但是只有很少的特性。旗舰版是商业版本,但是提供了一系列优秀的工具集和特性(你可以免费使用旗舰版30天)。 下载和安装Intellij Idea 你可以从 JetBrains官网下载最后一个版本(这里有Linux、Windows、MacOs的版本
石奈子
2018/06/13
2K0
IntelliJ IDEA(一) :安装与破解
我是从eclipse转IDEA的,对于习惯了eclipse快捷键的我来说,转IDEA开始很不习惯,IDEA快捷键多,组合多,记不住,虽然可以设置使用eclipse的快捷键,但是总感觉怪怪的。开始使用的时候自己也在网络上收集各种IDEA使用的教程,但是很多都不全,东说一点西说一点,因此我想在这里整理一份全而整的使用教程系列,不定时更新。
二十三年蝉
2019/05/25
3K0
IntelliJ IDEA for mac 2023.1.1 JAVA最实用的IDE开发工具中文版
经历了长时间等待Jetbrains终于退出了全新的IDEA。IntelliJ IDEA 2020.1增加了对Java 14和许多框架的新功能的支持,通过数据流分析辅助功能升级了调试器,添加了新的LightEdit模式,为您下载和配置了JDK,并完成了更多工作!小麦做为一个老牌的JAVA开发一定也要第一时间把这款软件介绍给大家哦。
用户1517359
2023/05/08
3780
IntelliJ IDEA for mac 2023.1.1 JAVA最实用的IDE开发工具中文版
IntelliJ IDEA CE 2022 Mac中文版(Java IDE集成开发软件)
IntelliJ IDEA CE 2022 mac汉化版是一款功能强大的Java IDE,专门设计用于借助众多工具和功能提高您的工作效率。IntelliJ IDEA的每个方面都专门设计用于最大限度地提高开发人员的生产力,强大的静态代码分析和人体工程学设计使开发不仅高效,而且令人愉快。
Mac知识分享
2022/09/06
1.1K0
解决 Linux 下 IntelliJ 系列软件的 IDE 中输入框位置不正确
问题如这个 issue 所示 https://github.com/fcitx/fcitx5/issues/79 , 解决方法很简单, 替换默认的 IDE runtime 就行 1.
Rikka
2022/01/20
1.4K0
解决 Linux 下 IntelliJ 系列软件的 IDE 中输入框位置不正确
IntelliJ IDEA 2022 for Mac 完美兼容版:全新UI和协作功能的Java IDE
IntelliJ IDEA是一款由JetBrains开发的Java集成开发环境(IDE),支持多种编程语言,如Java、Kotlin、Groovy、Scala等等。IntelliJ IDEA提供了许多强大的功能和工具,能够大大提高开发效率,是许多开发者的首选开发工具。IntelliJ IDEA 2022 for Mac是其最新版本,为Mac用户提供了更加优秀的开发体验。
用户10395188
2023/03/30
5340

相似问题

OutOfMemoryError与IntelliJ12 IDE

14

Intellij 12 IDE talk与ejabberd连接

11

intellij与springs grails IDE的比较

10

如何在IntelliJ IDE中集成Spark与Scala项目?

10

查找与intellij ide中的类相关的信息

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文