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内的每行命令

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

  • 相关阅读:
    jquery实现选项卡(两句即可实现)
    常用特效积累
    jquery学习笔记
    idong常用js总结
    织梦添加幻灯片的方法
    LeetCode "Copy List with Random Pointer"
    LeetCode "Remove Nth Node From End of List"
    LeetCode "Sqrt(x)"
    LeetCode "Construct Binary Tree from Inorder and Postorder Traversal"
    LeetCode "Construct Binary Tree from Preorder and Inorder Traversal"
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13638713.html
Copyright © 2011-2022 走看看