我是新来的Docker,并尝试拉一个Wordpress对接者形象,做一些改变,提交它,并上传新的图像到对接云。
但是,当我重新启动码头映像时,我不会回到之前提交的状态。我做错了什么吗?
docker pull tutum/wordpress:latestdocker commit -m "First commit" <CONTAINER ID> foo/bardocker logindocker push foo/bar:latestdocker pull tutum/wordpress:latest后的状态曾试过docker pull foo/bar:latest,并被告知Image is up to date for foo/bar:latest。
发布于 2016-08-02 21:33:42
你没做错什么!Docker的核心租户之一是容器应该是不可变的;也就是说,一旦您构建了一个容器,您应该期望它的状态在整个生命周期中保持不变。从您提供的信息来看,您似乎是从Tutum的Wordpress文件https://github.com/tutumcloud/wordpress开始的。
这将在短期内被取消,使用官方支持的wordpress停靠图:/wordpress/会更好。
如果您想在本地环境中攻击这个文件,并且/或保存对docker映像的更改,您将需要设置如下内容(取自我们的Dockerfile之一):
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 (我建议这样做,并将其用于内部开发):
app:
build: .
volumes:
- .:/var/www/html
ports:
- "80:80"将其保存为docker-compose.yml,然后可以运行docker-compose build / docker-compose up来启动应用程序。
一旦您进行了更改(在策略中使用挂载点),您将希望继续并标记此映像。通过标记图像,您应该能够将其推送到您唯一的用户下的私人停靠中心注册表。
然后,这个映像将包含所有的更改,因为您在本地环境中所做的更改将直接复制到映像中(注意COPY行)。
希望这能有所帮助!
-喵-
发布于 2016-08-02 16:51:32
容器是无状态的,因此重新启动Docker映像实质上会创建该映像的新容器实例。除非Wordpress容器将其数据保存在数据体积中,否则在销毁当前容器后,您所做的更改就会消失。由于该图像的Dockerfile未发布,因此很难判断其数据保存在何处。另一件事是,docker commit 命令不提交存储在容器卷中的任何数据。
看看这个Wordpress图像,它允许您为持久性指定要链接到的MySQL容器。
https://stackoverflow.com/questions/38725863
复制相似问题