• Docker 镜像相关


    获取镜像

    • docker pull
      docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
      
      • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
      • 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
      $ docker pull ubuntu:16.04
      
    • docker run
      $ docker run -it --rm 
          ubuntu:16.04 
          bash
      
      • -it
        interaction 和 terminal,交互式终端
      • --rm
        remove,用完后自动删除
      • ubuntu:16.04
        使用的镜像
      • bash
        运行后使用bash
    • docker exec
      在运行的容器中执行命令
      docker exec -it bf130089d033 bash
      
      • -d :
        分离模式: 在后台运行
      • -i :
        即使没有附加也保持STDIN 打开
      • -t :
        分配一个伪终端

    列出镜像

    • docker image ls || docker images
      显示仓库名、标签、镜像 ID、创建时间以及所占用的空间。
      root@len:~# docker image ls
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      tomcat              9-jre8              08ea7be8264a        27 hours ago        464MB
      tomcat              latest              27600aa3d7f1        27 hours ago        463MB
      ubuntu              16.04               a3551444fc85        12 days ago         119MB
      
    • docker system df
      查看真实的镜像、容器、数据卷所占用的空间。
      root@len:~# docker system df
      TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
      Images              3                   1                   600.9MB             582.8MB (96%)
      Containers          1                   0                   57.43kB             57.43kB (100%)
      Local Volumes       0                   0                   0B                  0B
      Build Cache         0                   0                   0B                  0B
      
    • docker image ls -a
      显示全部镜像
    • docker image prune
      删除无意义的虚悬镜像
      root@len:~/docker/tomcat# docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      <none>              <none>              b1d3946144d1        27 seconds ago      503MB
      <none>              <none>              557d0f6e459a        36 hours ago        463MB
      <none>              <none>              594ec29cf32d        36 hours ago        463MB
      <none>              <none>              9a832102d97c        36 hours ago        463MB
      
      由于在拉取和构建过程中,版本号被替代后原来的镜像就失去了意义,需要删除:
      docker image prune
      
      如果删除失败则说明有容器在占用,删除容器后再删除虚悬镜像

    删除镜像

    docker image rm [选项] <镜像1> [<镜像2> ...]
    

    <镜像> 可以是:

    • 镜像短 ID:3个字符以上即可
    • 镜像长 ID:完整的ID
    • 镜像名:镜像名
    • 镜像摘要:DIGEST号码

    Dockerfile

    一般的,需要在空白目录新建 Dockerfile 的文件,在里面写入相应指令

    • FROM
      表示以XX镜像为基础,在其上定制修改。
    • RUN
      表示执行命令行,++每运行一次 RUN 命令,就会建立一层镜像++,因此要减少 RUN 的层数。有两种格式:
      • shell 格式
        直接写相应 shell 脚本即可
      • exec 格式
        类似调用函数
    FROM tomcat
    COPY index.html /usr/local/tomcat/webapps/ROOT
    

    表示把上下文目录中的 index.html 拷贝到镜像中的目录中

    构建自己的镜像

    • docker build
      参数: -t 表示 target
      docker build -t myimage:v1 .
      
      表示将当前目录的文件打包,目标是myimage的v1版
      root@len:~/docker/tomcat# docker build -t myimage .
      Sending build context to Docker daemon  3.072kB
      Step 1/2 : FROM tomcat
       ---> 27600aa3d7f1
      Step 2/2 : COPY index.html /usr/local/tomcat/webapps/ROOT
       ---> Using cache
       ---> b2baada4a8f5
      Successfully built b2baada4a8f5
      Successfully tagged myimage:latest
      
      看出,此过程分别执行对应的指令,打包成不同的层
    • 参数中 . 的理解
      . 指的是上下文环境,并不一定是Dockerfile文件所在的目录(该文件可以在任意地方,使用 -f ../XXX指定),需要什么文件就将什么文件放入该目录再打包。

    Dockerfile指令

    • ADD
      会自动将 tar 包解压
      ADD app.tar.gz .
    • WORKDIR
      由于每条指令对应的是不同层,因此shell的执行路径不一定相同,所以先指定工作目录
      WORKDIR /usr/local/tomcat/webapps/ROOT
    • EXPOSE
      暴露出端口

    没有修不好的电脑
  • 相关阅读:
    设计模式工厂模式
    设计模式原型模式
    Excel自定义格式千分符
    浏览器报:net::ERR_EMPTY_RESPONSE解决方案
    git branch a无法显示远程分支解决办法
    .Net启动程序报错:It was not possible to find any compatible framework version
    自动化测试框架pytest 安装和入门到精通实战
    2020非常全的接口测试面试题及参考答案软件测试工程师没有碰到算我输!
    Python+unittest+requests+excel实现接口自动化测试框架项目实战
    软件测试必学之python+unittest+requests+HTMLRunner编写接口自动化测试集
  • 原文地址:https://www.cnblogs.com/duniqb/p/12702475.html
Copyright © 2020-2023  润新知