需求:修改镜像中的一个文件
实现:

 docker cp ./start-zookeeper 799e2dd22da4823dade9be242b9b8330f59474fa9bd4ca558db02691a3c20638:/opt/zookeeper/bin/
docker commit -m "修改start-zookeeper中的语法错误" -a "liyuan" 799e2dd22da4823dade9be242b
9b8330f59474fa9bd4ca558db02691a3 yuanxi2314/kubernetes-zookeeper1.0-3.4.10:v4.0
# docker hub已注册了一个账号id为yuanxi2314,且该账号下有名为kubernetes-zookeeper1.0-3.4.10的仓库
docker login
docker push yuanxi2314/kubernetes-zookeeper1.0-3.4.10:v4.0
docker exec -it 容器ID /bin/bash
docker里面没有vim,需要自行安装,安装代码如下所示。不过不推荐这种形式,因为里边的文件是临时的,容器被删除之后,配置就失效了,需要从新配置。
apt-get update
apt-get install vim
2、通过docker cp拷贝进行修改
可以通过下面的代码将需要修改文件拷贝出来,修改完成之后再拷贝回去。
#将容器文件拷贝出来
sudo docker cp 容器I
                                    经常需要对镜像内部的文件进行修改,例如在构建镜像时候修改配置文件。在使用一些开源镜像的过程发现了一些对镜像文件进行的方式,这里以hadoop集群搭建和storm集群搭建为例介绍两种修改镜像内配置文件的方式。
一、通过context把配置文件传入镜像
step1. 在DockerFile同级目录下,创建conf文件夹,在文件放置修改好的配置文件
step2. 在DockerFile把c...
  -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
  –name 为创建的容器命名
  -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
  -d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,
                                    由于需要修改mysql的sql_mode,在命令行修改每次重启都会失效,因为修改docker下mysql的配置文件。
操作系统:centos7
docker版本:Docker version 17.05.0-ce, build 89658be
mysql版本:5.7.18
1.拉取镜像
docker pull mysql:5.7.18
2.列出镜像
[root@zk01 ~]# docker images
REPOSITORY                          TAG         IMAGE ID      CREATED       SIZE
mysql       
1.先使用maven clean
2.maven package
3.在目录target下找到docker文件下的工程文件,将文件放到编译服务器任意的目录下,开始打包docker镜像
二、准备dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
dockerfile 命令详解 (dockerfile )
FROM base_images
ADD ./target/xxx.jar  ./xxx.jar
                                    docker镜像配置文件修改
需要修改docker里面的配置文件时,因为docker镜像里面没有vim,下载也比较麻烦,可以使用
docker cp  docker镜像名:想要修改文件的路径 想要复制到的路径
将镜像文件复制到镜像外部,然后使用系统的vim修改修改后再把文件复制回去。
例如:docker cp zookeeper-server:/etc ~/tmp
注意:修改完cp回镜像的时候可能会失败,原因可能是该文件正在被使用
可以先把该docker镜像服务停止,再把文件cp回去,重启
                                    docker镜像新增文件/修改文件方法
i. 使用docker images获取当前镜像号信息
(如果没有,使用docker pull harbor.xxxx.com/xxx/xxxx:x.x.x.xxx-xxxxxxxx 进行拉取镜像)
ii. 将要添加的文件放在一个临时目录下,touch一个Dockerfile文件
(如若需要修改镜像文件,可以使用docker cp xxxxx:/app/xxxx/xxxx.xml ./ 拷贝至当前目录)
( 如若镜像未启动 docker run -itd h ha