镜像
联合文件系统:分层,轻量级高性能的联合文件系统,对文件系统的修改作为一次提交来一层层叠加
加载原理:boots内核部分公用,硬件部分用宿主机的,roots不一样
bootfs docker 镜像 最底层,包含boot加载器和内核
docker run -it -p 8888:8080 tomcat 8888虚拟机端口,8080容器端口
docker run -it -P tomcat 随机分配对外暴露的端口,
docker commit -a "lws" -m "tomcat lws" 容器id lws/tomcat:1.2
docker run -it -d -p 7777:8080 tomcat
容器数据卷 持久化容器里的数据
docker 容器数据卷
docker copy
docker run -it -v 镜像名或id 宿主机绝对路径:容器内目录 --privileged 容器名 相当于共享目录 ,关闭容器启动容器(注意容器id是同一个)后仍可以同步
docker run -it -v 镜像名或id 宿主机绝对路径:容器内目录:ro 相当于readonly只读
docker inspect 详细信息中valumeRW 为True 代表 可以读写共享
docker 容器设置权限
设置容器券继承与相互共享
docker run -it --name docker2 --volume-from docker1 容器名
dockerFile:对于镜像的源码的描述文件
1.编写文件
FROM centos
VOLUME ["数据卷1","数据卷2"] (默认主机生成两个数据卷存储)
CMD echo "finished"
CMD /bin/bash
2.build 构建镜像
docker build -f /dockerFile lws/centos:1.1
docker images
3.run 镜像
关键字定义
FROM scratch 源镜像
MAINTAINER 维护镜像的姓名和邮箱地址
RUN 容器构建所需要的命令
EXPOSE 容器对外暴露的端口
WORKDIR 创建容器后,终端默认登录建立的工作目录
ENV 构建镜像中设置变量
ADD 宿主机目录下的文件拷贝进镜像且add命令自动处理URL和解压tar压缩包
COPY 拷贝宿主机文件到镜像容器中
VOLUME 数据卷
CMD 启动时要运行的命令,可有多个CMD命令,但是会被docker run后面的参数替换掉
ENTRYPOINT 启动时要运行的命令 , 但是会被docker run后面的参数追加
ONBUILD 子镜像
示例1:基础版centos镜像中没有vim编辑器,ifconfig命令,默认路径为根目录 "/"
eg:
FROM centos
MAINTAINER liws<XXX@163.com>
ENV myPath /tmp
WORKDIR ${myPath}
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /echo/${myPath}
CMD /bin/bash
docker build -f /dockerFile -t lws/centos:1.2
docker run -it 镜像id或镜像名