docker学习系列2 保存对容器的修改

接上篇

docker容器虽然运行起来了。

但遇到了新的问题:

  1. 容器内安装的服务器是nginx,nginx对 PHPINFO 支持不好,对于ThiankPHP项目,简单的说在apache服务器下运行 http://localhost:8088/home/Index/index 能正常返回结果,而nginx返回404,必须要写成 http://localhost:8088/index.php?m=home&c=Index&a=demo 所以我需要修改nginx配置文件,使其支持。
  2. 由于容器本身是无状态的我修改完配置文件,关闭docker,下次在启动后还是原样,我需要保存修改。

下面是解决方法:

  1. 容器为了精简没有按照VIM,编辑文件不方便,要先安装 apt-get update; apt-get install vim 如果执行 apt-get update 超时了,得翻墙。
  2. vi /etc/nginx/sites-enabled/default 编辑并修改配置文件,记得最好先备份
  3. 修改完新开个窗口 先执行 docker ps 查看正在运行的容器,复制 container id。 然后 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 如 docker commit cb439fb2c714 finley/phpenv:tp3.2 commit 会基于对container的修改创建一个新的镜像 具体用法请参见官方文档:commit

注意: 经查,不推荐更改运行中的容器配置,容器本身是无状态的,当然也可以通过进入容器内部的方式进行更改: docker exec -it 这样的更改是无法持久化保存的,当容器重启后,更改就丢失了,正确的做法是将需要持久化保存的数据放在挂载的存储卷中,当配置需要改变时直接删除重建。

回顾:

# 从别人那拉个镜像
docker pull eriksencosta/php-dev
# 基于上面的镜像加入了自己的修改并提交为自己的镜像,还打了tag
docker commit cb439fb2c714  finleyma/php-dev:tp3.2

问题: 这个项目的环境是有了,但是是多人开发,我如何将我的配好的镜像分享给他人呢? 见下篇

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏写代码的海盗

Dockerfile 最佳实践 OverviewGeneral guidelines and recommendationsThe Dockerfile instructions

Dockerfile 最佳实践 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢!   ...

3059
来自专栏圣杰的专栏

.NET Core容器化之多容器应用部署@Docker-Compose

1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署...

2686
来自专栏大愚Talk

Dockerfile 与 Compose 环境搭建学习笔记(二)

上一篇文章对整体结构进行了简单记录,这一篇介绍下关于Dockerfile自定义镜像以及各个服务的配置。

1312
来自专栏Debian社区

Debian 8 (Jessie)下面如何安装卸载docker

Debian是使用非常广泛的系统,本篇文章第一部分讲述如何在Debian 8 (Jessie) 下面安装 Docker 环境,第二部分介绍了如何彻底的清理 De...

2472
来自专栏编程坑太多

『中级篇』docker之java容器运行外置springboot-jar(番外篇)(79)

1483
来自专栏大魏分享(微信公众号:david-share)

Look,容器中应用的构建方法!

S2I增量构建重用以前构建的image中的工件 要创建增量构建,请修改BuildConfig策略定义:

1473
来自专栏漫漫全栈路

Docker循序渐进

上一篇的演示中使用的都是默认登录了Root权限后的操作,而实际的开发运维情况下,我们一般极少使用Root权限,所以Docker提供了一个权限组,我们只需要把当前...

3179
来自专栏小狼的世界

Kubernetes基础

Kubernetes是当今最流行的开源容器管理平台,它就是大名鼎鼎的Google Borg的开源版本。Google在2014年推出了Kubernetes,本文发...

2582
来自专栏Petrichor的专栏

ubuntu: wget 指令

832
来自专栏吴伟祥

Linux中ctrl-c, ctrl-z, ctrl-d 区别

1、Ctrl+C比较暴力,就是发送Terminal到当前的程序,比如你正在运行一个查找功能,文件正在查找中,Ctrl+C就会强制结束当前的这个进程。

741

扫码关注云+社区

领取腾讯云代金券