zoukankan      html  css  js  c++  java
  • Docker学习三:配置docker镜像

    一、镜像基本操作

    镜像拉取

      从远程仓库拉取镜像的命令:docker pull [Registry]/[Repository]/[Image]:[Tag];其中

      Registry为注册服务器,默认会从docker.io拉取镜像,也可以替换为自己的注册服务器

      Repository为镜像仓库

      Image为镜像名称

      Tag为镜像标签,没有指定则为latest

    镜像重命名

      重命名镜像命令:docker tag [SOURCE_IMAGE][:TAG] [TARGET_IMAGE][:TAG]

    镜像删除

      docker rmi 镜像id/镜像名称

    镜像查看

      查看所有镜像:docker images

      查看指定镜像:docker image ls busybox、docker images |grep busybox

    镜像构建

    主要有两种构建镜像方式:

    1.使用docker commit命令从运行中的容器提交为镜像
    #先运行一个busybox容器并进入,其中--rm参数表示退出容器即删除容器及相关数据
    docker run --rm --name=busybox -it busybox sh
    
    #进入容器后新建一个文件并写入内容
    touch hello.txt && echo "I love docker" >> hello.txt
    
    #在新的命令行窗口中,从该容器提取镜像
    docker commit busybox busybox:hello

    执行docker images查看生成的新镜像:

    通过新生成的镜像运行容器并进入后发现,容器中包含在旧镜像容器中创建的文件:docker run --rm --name=busybox -it busybox:hello sh

    再通过原始镜像运行容器并进入后发现,没有我们创建的文件:

     也就是说,这种方式可以适用于:在已有容器上做修改并生成新的镜像,但不影响原始镜像

    2.使用docker build命令从 Dockerfile 构建镜像

     Dockerfile 是一个包含了用户所有构建命令的文本,通过docker build命令可以从 Dockerfile 生成镜像。

    使用 Dockerfile 构建镜像具有以下特性:

    • Dockerfile 的每一行命令都会生成一个独立的镜像层,并且拥有唯一的 ID;
    • Dockerfile 的命令是完全透明的,通过查看 Dockerfile 的内容,就可以知道镜像是如何一步步构建的;
    • Dockerfile 是纯文本的,方便跟随代码一起存放在代码仓库并做版本管理

    dockerfile常用指令

    FROM Dockerfile  除了注释第一行必须是 FROM ,FROM 后面跟镜像名称,代表我们要基于哪个基础镜像构建我们的容器。
    RUN  RUN后面跟一个具体的命令,类似于 Linux 命令行执行命令。
    ADD  拷贝本机文件或者远程文件到镜像内
    COPY  拷贝本机文件到镜像内
    USER  指定容器启动的用户
    ENTRYPOINT  容器的启动命令
    CMD  CMD为 ENTRYPOINT 指令提供默认参数,也可以单独使用 CMD 指定容器启动参数
    ENV  指定容器运行时的环境变量,格式为 key=value
    ARG  定义外部变量,构建镜像时可以使用 build-arg = 的格式传递参数用于构建
    EXPOSE  指定容器监听的端口,格式为 [port]/tcp 或者 [port]/udp
    WORKDIR  为 Dockerfile 中跟在其后的所有 RUN、CMD、ENTRYPOINT、COPY 和 ADD 命令设置工作目录。

    构建示例:

    在test_dockerfile下创建两个文件,内容分别如下:

    #Dockerfile文件内容
    FROM centos:7
    
    COPY nginx.repo /etc/yum.repos.d/nginx.repo
    
    RUN yum install -y nginx
    
    EXPOSE 80
    
    ENV HOST=mynginx
    
    CMD ["nginx","-g","daemon off;"]
    
    #nginx.repo内容
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=0
    enabled=1

    在当前目录下执行:docker build -t mynginx .命令进行构建

    其中,-t表示标签名,.(点)表示指定docker的上下文环境(好像就是当前目录),部分构建过程如下:

    首先会发送构建的上下文内容给docker构建引擎,然后分别构建Dockerfile内的每行命令

    构建完成后,可以查看生成的本地镜像:

  • 相关阅读:
    redis数据结构底层剖析学习笔记2
    redis数据结构底层剖析学习笔记1
    java正则表达式学习笔记
    springmvc sessionfilter 登录过滤器
    Java中JSON字符串与java对象的互换实例详解
    用9种办法解决 JS 闭包经典面试题之 for 循环取 i
    近期流行的JavaScript框架与主题
    JavaScript 中的 this 问题总结 !
    常见前端面试题及答案(下)
    常见前端面试题及答案(上)
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13638713.html
Copyright © 2011-2022 走看看