首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交到码头形象不起作用?

提交到码头形象不起作用?
EN

Stack Overflow用户
提问于 2016-08-02 16:26:34
回答 2查看 862关注 0票数 0

我是新来的Docker,并尝试拉一个Wordpress对接者形象,做一些改变,提交它,并上传新的图像到对接云。

但是,当我重新启动码头映像时,我不会回到之前提交的状态。我做错了什么吗?

  1. docker pull tutum/wordpress:latest
  2. 设置Wordpress,添加一个主题,添加插件,添加一些页面
  3. docker commit -m "First commit" <CONTAINER ID> foo/bar
  4. docker login
  5. docker push foo/bar:latest
  6. 重新启动码头集装箱。回到我做docker pull tutum/wordpress:latest后的状态

曾试过docker pull foo/bar:latest,并被告知Image is up to date for foo/bar:latest

EN

回答 2

Stack Overflow用户

发布于 2016-08-02 21:33:42

你没做错什么!Docker的核心租户之一是容器应该是不可变的;也就是说,一旦您构建了一个容器,您应该期望它的状态在整个生命周期中保持不变。从您提供的信息来看,您似乎是从Tutum的Wordpress文件https://github.com/tutumcloud/wordpress开始的。

这将在短期内被取消,使用官方支持的wordpress停靠图:/wordpress/会更好。

如果您想在本地环境中攻击这个文件,并且/或保存对docker映像的更改,您将需要设置如下内容(取自我们的Dockerfile之一):

代码语言:javascript
复制
FROM wordpress:latest

# installs php zip extensions - used for plugins like duplicator
RUN docker-php-ext-install zip 

# Copy the existing app into our wp directory

COPY . /var/www/html

RUN chown -R www-data:www-data /var/www/html/

CMD ["apache2-foreground"]

如果您想要更改映像(例如安装插件和主题),您将希望从本地计算机创建一个装入点到对接器容器中。要创建挂载点,在构建容器时,请使用-v标记设置卷。

实现此功能的另一种方法是使用docker-compose (我建议这样做,并将其用于内部开发):

代码语言:javascript
复制
app:
  build: .
  volumes:
    - .:/var/www/html
  ports:
    - "80:80"

将其保存为docker-compose.yml,然后可以运行docker-compose build / docker-compose up来启动应用程序。

一旦您进行了更改(在策略中使用挂载点),您将希望继续并标记此映像。通过标记图像,您应该能够将其推送到您唯一的用户下的私人停靠中心注册表。

然后,这个映像将包含所有的更改,因为您在本地环境中所做的更改将直接复制到映像中(注意COPY行)。

希望这能有所帮助!

-喵-

票数 2
EN

Stack Overflow用户

发布于 2016-08-02 16:51:32

容器是无状态的,因此重新启动Docker映像实质上会创建该映像的新容器实例。除非Wordpress容器将其数据保存在数据体积中,否则在销毁当前容器后,您所做的更改就会消失。由于该图像的Dockerfile未发布,因此很难判断其数据保存在何处。另一件事是,docker commit 命令不提交存储在容器卷中的任何数据。

看看这个Wordpress图像,它允许您为持久性指定要链接到的MySQL容器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38725863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档