美文网首页
docker(三)docker镜像文件

docker(三)docker镜像文件

作者: 7ColorLotus | 来源:发表于2020-06-04 11:45 被阅读0次
  • 数据管理

    1. 前提
      1>docker容器不应该负责持久化
      2>业界使用docker,等价于使用服务
      3>官方使用docker,每次启服务,可以直接创建后运行。直接docker run ,而不使用docker start。这样的好处是:启动docker服务时,不必关心以前遗留的数据
      4>docker容器运行生成的文件不应该放在容器内,应该放在宿主机内
    2. 数据挂载
      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>删除容器时,默认不删除共享文件。可以强制删除
  • 镜像的制造

    1. 使用commit方式建镜像, 以nginx为例
      1>启动一个centos容器
      2>进入容器安装nginx。
       a, 使用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)
      
      3> 提交镜像:docker commit centos4nginx my-centos-nginx:v1
      4> 启动容器并启动容器内的nginx服务:
        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守护关闭
      
      5> 容器包含一个读写层的文件层。commit操作时,此层变为只读层即镜像
    2. 使用docker file 创建镜像
      1>准备dockfile文件
      2>创建镜像:docker build -t cmd . (.指定在当前目录寻找dockerfile)
      3>运行镜像:docker run -it cmd
      4>RUN就是增加一个镜像层
      5>Dockerfile指令集
      a,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,当指定多个时,只有最后一个起效。
    
    DockFile详解.png

    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
    

相关文章

  • docker-- cobra

    *查看docker镜像仓库 *搜索docker镜像 *拉取docker镜像文件 *运行镜像文件,并进入root终端...

  • docker常用命令

    docker images [options] (列举本地所有镜像文件) docker search [optio...

  • Docker基本概念(五)-仓库

    Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。 Docker仓库和...

  • docker(三)docker镜像文件

    数据管理前提1>docker容器不应该负责持久化2>业界使用docker,等价于使用服务3>官方使用docker,...

  • docker安装jenkins

    1. 启动docker,下载Jenkins镜像文件 docker pull jenkins/jenkins 2. ...

  • Docker 的使用

    接着 Docker 入门 我们来看看 Docker 的一些常见命令。 win10上修改 docker 的镜像文件存...

  • 3、docker疑问篇(常见问题)

    一、镜像相关 1、如何批量清理临时镜像文件 答:可以使用 docker rmi $(docker images -...

  • docker面试题

    镜像相关 1、如何批量清理临时镜像文件?可以使用sudo docker rmi $(sudo docker ima...

  • docker安装mysql

    1.下载Mysql镜像文件docker pull mysql 2.查询结果docker images 3.启动My...

  • docker保存镜像到本地,并加载本地镜像文件

    1、查看已有的镜像文件:docker images 2、将镜像打包成本地文件 指令:docker save 镜像i...

网友评论

      本文标题:docker(三)docker镜像文件

      本文链接:https://www.haomeiwen.com/subject/ixhgzhtx.html