-
数据管理
- 前提
1>docker容器不应该负责持久化
2>业界使用docker,等价于使用服务
3>官方使用docker,每次启服务,可以直接创建后运行。直接docker run ,而不使用docker start。这样的好处是:启动docker服务时,不必关心以前遗留的数据
4>docker容器运行生成的文件不应该放在容器内,应该放在宿主机内 - 数据挂载
1>挂载命令:docker run --name ce -v /opt/data -it centos /bin/bash。可以指定宿主机路径docker run --name ce -v /opt/data:/data -it centos /bin/bash
2>查看宿主机中的挂载路径:docker inspect 容器id 。查看mounts节点
3>docker 的数据卷在宿主机里的默认位置:/var/lib/docker/volumes
4>共享其他容器的共享文件:docker run -it --name cen3 --volumes-from ce centos
5>删除容器时,默认不删除共享文件。可以强制删除
- 前提
-
镜像的制造
- 使用commit方式建镜像, 以nginx为例
1>启动一个centos容器
2>进入容器安装nginx。
3> 提交镜像:docker commit centos4nginx my-centos-nginx:v1a, 使用rpm安装。rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm b, 使用yum安装 。先搜索(yum search nginx )再安装( yum install nginx -y)
4> 启动容器并启动容器内的nginx服务:
5> 容器包含一个读写层的文件层。commit操作时,此层变为只读层即镜像a,命令:docker run -d --name my-centos-nginx-c -p 8081:80 my-centos-nginx:v1 /usr/sbin/nginx -g "daemon off;" b, /usr/sbin/nginx 进程是以后台进程启动 c, -g "daemon off;" 要以前台的方式启动,daemon off守护关闭
- 使用docker file 创建镜像
1>准备dockfile文件
2>创建镜像:docker build -t cmd . (.指定在当前目录寻找dockerfile)
3>运行镜像:docker run -it cmd
4>RUN就是增加一个镜像层
5>Dockerfile指令集
DockFile详解.pnga,From 第一条指令必须为FROM指令,用于指定基础镜像 b,MAINTAINER 指定维护者信息 c,RUN 会在shell终端运行命令 d,EXPOSE 格式为EXPOSE[...]声明容器需要暴露的端口号,镜像启动可以通过-P或-p进行端口映射的绑定 e,ENV 指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量 f,ADD 该命令将复制指定的文件到容器中,其中可以是Dockfile所在目录的一个相对路径;也可以是tar文件(自动解压) g,VOLUME 格式为VOLUME[path],创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据 h,USER 指定容器时的用户名,后续RUN也会指定该用户 i,WORKDIR 指定工作空间,后续命令都在此目录下执行 j,ENTRYPOINT 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。 每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
6> CMD VS ENTRYPOINT
a, CMD ---- 给出的是一个容器的默认的可执行体,多个cmd最后一个生效 ----shell用法:CMD echo "hello cmd" ----exec用法:CMD ["/bin/bash","-c","echo 'hello cmd'"] b,ENTRYPOINT----是正统的用于定义容器启动以后执行的。容器入口,多个ENTRYPOINT最后一个生效 ----shell用法(不接受参数,不推荐):CMD ["p in cmd"] ENTRYPOINT echo ----exec用法:CMD ["p in cmd"] ENTRYPOINT ["echo"]
7>Dockerfile样例
a,在centos里启动nginx容器文件内容 FROM centos MAINTAINER 626477293@qq.com RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm RUN yum install nginx -y CMD ["/usr/sbin/nginx", "-g", "daemon off;"] b,创建镜像:docker build -t nginx4build:1.0 . c,根据镜像运行容器:docker run -it -d -p 8081:80 --name ngnx4build1 nginx4build:1.0
- 使用commit方式建镜像, 以nginx为例
网友评论