平常写dockerFile,让我很头疼,很麻烦,有些docker不支持的,然后还要写shell脚本,让docker去执行,而且有些命令,权限还不支持,所以配置很麻烦。而我的大环境又是不会经常改变的,不用经常加外部文件之类的。所以在容器内直接操作好,打包成镜像可以免去繁琐的,脚本。
但是如果,你需要经常加file文件,还是从dockerFile入手比较好。我的文件都是通过hdfs从外部读取。
当然,最终我是觉得,最好的方式是舍去繁琐shell和dockerFile,dockerFile只用些简单的命令,如copy文件。然后我们进入容器,能快速的配置,配置完成后,在外部装一个httpd服务,我们需要修改容器的时候,直接从通过http请求的方式,下载内容,到docker容器内。这样就能完全避免,频繁的改dockerFile,频繁的测试,因为这种我觉得真的很笨蛋。
所以结论就是:在容器内,做配置是最好,也是最方便的,没有之一
默认docker,在你修改配置后,关闭docker后,配置都会初始化。
下面是操作:
修改的linux内容不会被保存,退出后就会被覆盖,唯一不会覆盖的文件是
vi ~/.bashrc
在里头写linux命令,即可(每次启动docker,他会自动执行里面的命令)
我刚刚进入了容器修改完了内容
现在退出容器:
docker ps -a看一下
sudo docker commit -a "clark" -m "create new img" 8a7419ac92aa sparkdemo:v0
然后执行完,你就能看到一条
你image一下,就能看到这个镜像了
sudo docker image ls
完成,到这里就完成了
将镜像打成包
sudo docker save -o sparkdemo.tar sparkdemo:v1
把之前的镜像,删除,docker stop 容器名
docker rm 容器名
docker rmi 镜像:版本
然后加载,打包后的镜像
docker load -i sparkdemo.tar
你现在,进入容器,看看配置有没有被更改
docker run -it --entrypoint /bin/bash --name upcontainer 镜像名:镜像版本
发现已经被更改,说明成功