今天本来想下载一个gerrit docker玩玩,结果不带vnc连接的镜像,所以算了,但是无意中发现了docker run xxx后,我在home中建立一个文件夹,然后exit退出后,再用docker run xxx,这个文件夹就没有了,说明没有保存我在docker中的修改。
后来查了资料才知道。docker run是新建一个镜像。而每个镜像的历史记录有一个id号。若通过docker start 此id号进入,然后可以看到我建立的文件夹还存在。
这就解释了为什么docker ps可以看到那么多记录,因为我对容器的修改它都保存了记录。

那么问题来了,若我要在ubuntu16.04中添加文件,进行代码调试,通过虚拟机共享文件夹挂载可以解决。那么我要安装其它依赖库文件呢?难道我们每次都要重装库文件?
网上搜索下了可以用commit,但是推荐用docker file来记录更改,这样不是黑盒状态,与原始镜像的差别都可以从dorker file中看出来。将来直接使用制作出的新镜像。
我不喜欢黑盒,所以我选择用Dockerfile来制作vnc镜像,网上找到的,稍微修改了下,变为己用。逼近现在不是重复造轮子的时代V
FROM ubuntu:16.04
#ENV HOME /root
#ENV DEBIAN_FRONTEND noninteractive
RUN sed -i "s/archive.ubuntu./mirrors.aliyun./g" /etc/apt/sources.list
RUN sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list
RUN apt-get update \
&& apt-get install -y supervisor \
openssh-server vim-tiny \
x11vnc xvfb \
&& apt-get autoclean \
&& apt-get autoremove \
&& rm -rf /var/lib/apt/lists/*
#WORKDIR /root
#容器启动时的执行命令
CMD /user/sbin/nginx
最后能build出一个镜像,但是适用了下vnc,不能连接。看来vnc我还是要在ubuntu实体机上玩下。今天主要目标是docker自制镜像算是练过一把手了。过程中第一次很慢,网上搜索了源添加进入dockerfile。过程中也学习了dockerfile的组成及关键字。

网友评论