版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

镜像的获取

pull from registry (online)
  1. 从registry拉取
    • public(公有)
    • private(私有)
  • build from Dockerfile (online) 从Dockerfile构建
    1. 从Dockerfile构建(在线)
    2. 文件导入(离线)
    load from file (offline) 文件导入 (离线)

    Docker Image Registry

    镜像的基本操作

    代码块
    $ docker image
    
    Usage:  docker image COMMAND
    
    Manage images
    
    Commands:
    build       Build an image from a Dockerfile
    history     Show the history of an image
    import      Import the contents from a tarball to create a filesystem image
    inspect     Display detailed information on one or more images
    load        Load an image from a tar archive or STDIN
    ls          List images
    prune       Remove unused images
    pull        Pull an image or a repository from a registry
    push        Push an image or a repository to a registry
    rm          Remove one or more images
    save        Save one or more images to a tar archive (streamed to STDOUT by default)
    tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
    
    Run 'docker image COMMAND --help' for more information on a command.
    镜像的拉取Pull Image

    镜像的拉取

    默认从Docker Hub拉取,如果不指定版本,会拉取最新版。

    代码块
    $ docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    69692152171a: Pull complete
    49f7d34d62c1: Pull complete
    5f97dc5d71ab: Pull complete
    cfcd0711b93a: Pull complete
    be6172d7651b: Pull complete
    de9813870342: Pull complete
    Digest: sha256:df13abe416e37eb3db4722840dd479b00ba193ac6606e7902331dcea50f4f1f2
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    指定版本

    指定版本:

    代码块
    $ docker pull nginx:1.20.0
    1.20.0: Pulling from library/nginx
    69692152171a: Already exists
    965615a5cec8: Pull complete
    b141b026b9ce: Pull complete
    8d70dc384fb3: Pull complete
    525e372d6dee: Pull complete
    Digest: sha256:ea4560b87ff03479670d15df426f7d02e30cb6340dcd3004cdfc048d6a1d54b4
    Status: Downloaded newer image for nginx:1.20.0
    docker.io/library/nginx:1.20.0
    从Quay上拉取镜像

    从Quay上拉取镜像:

    代码块
    $ docker pull quay.io/bitnami/nginx
    Using default tag: latest
    latest: Pulling from bitnami/nginx
    2e6370f1e2d3: Pull complete
    2d464c695e97: Pull complete
    83eb3b1671f4: Pull complete
    364c139450f9: Pull complete
    dc453d5ae92e: Pull complete
    09bd59934b83: Pull complete
    8d2bd62eedfb: Pull complete
    8ac060ae1ede: Pull complete
    c7c9bc2f4f9d: Pull complete
    6dd7098b85fa: Pull complete
    894a70299d18: Pull complete
    Digest: sha256:d143befa04e503472603190da62db157383797d281fb04e6a72c85b48e0b3239
    Status: Downloaded newer image for quay.io/bitnami/nginx:latest
    quay.io/bitnami/nginx:latest

    镜像的查看

    代码块
    $ docker image ls
    REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
    quay.io/bitnami/nginx   latest    0922eabe1625   6 hours ago   89.3MB
    nginx                   1.20.0    7ab27dbbfbdf   10 days ago   133MB
    nginx                   latest    f0b8a9a54136   10 days ago   133MB

    镜像的删除

    代码块
    $ docker image rm 0922eabe1625
    Untagged: quay.io/bitnami/nginx:latest
    Untagged: quay.io/bitnami/nginx@sha256:d143befa04e503472603190da62db157383797d281fb04e6a72c85b48e0b3239
    Deleted: sha256:0922eabe16250e2f4711146e31b7aac0e547f52daa6cf01c9d00cf64d49c68c8
    Deleted: sha256:5eee4ed0f6b242e2c6e4f4066c7aca26bf9b3b021b511b56a0dadd52610606bd
    Deleted: sha256:472a75325eda417558f9100ff8b4a97f4a5e8586a14eb9c8fc12f944b26a21f8
    Deleted: sha256:cdcb5872f8a64a0b5839711fcd2a87ba05795e5bf6a70ba9510b8066cdd25e76
    Deleted: sha256:e0f1b7345a521469bbeb7ec53ef98227bd38c87efa19855c5ba0db0ac25c8e83
    Deleted: sha256:11b9c2261cfc687fba8d300b83434854cc01e91a2f8b1c21dadd937e59290c99
    Deleted: sha256:4819311ec2867ad82d017253500be1148fc335ad13b6c1eb6875154da582fcf2
    Deleted: sha256:784480add553b8e8d5ee1bbd229ed8be92099e5fb61009ed7398b93d5705a560
    Deleted: sha256:e0c520d1a43832d5d2b1028e3f57047f9d9f71078c0187f4bb05e6a6a572993d
    Deleted: sha256:94d5b1d6c9e31de42ce58b8ce51eb6fb5292ec889a6d95763ad2905330b92762
    Deleted: sha256:95deba55c490bbb8de44551d3e6a89704758c93ba8503a593cb7c07dfbae0058
    Deleted: sha256:1ad1d903ef1def850cd44e2010b46542196e5f91e53317dbdb2c1eedfc2d770c

    镜像的导出和导入

    (offline)

    代码块
    PS C:\Users\Peng Xiao\docker.tips\image> docker image ls
    nginx        1.20.0    7ab27dbbfbdf   12 days ago   133MB
    nginx        latest    f0b8a9a54136   12 days ago   133MB
    PS C:\Users\Peng Xiao\docker.tips\image> docker image save nginx:1.20.0 -o nginx.image
    PS C:\Users\Peng Xiao\docker.tips\image> ls
    
    
        Directory: C:\Users\Peng Xiao\docker.tips\image
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----         5/24/2021   1:40 PM      137379328 nginx.image
    
    
    PS C:\Users\Peng Xiao\docker.tips\image> docker image rm 7ab
    Untagged: nginx:1.20.0
    Deleted: sha256:7ab27dbbfbdf4031f0603a4b597cc43031ff883b54f9329f0309c80952dda6f5
    Deleted: sha256:5b2a9404d052ae4205f6139190fd4b0921ddeff17bf2aaf4ee97f79e1a8242fe
    Deleted: sha256:03ebf76f0cbf5fd32ca010bb589c2139ce7e44c050fe3de2d77addf4cfd25866
    Deleted: sha256:0191669d087dce47072254a93fe55cbedd687f27d3798e2260f846e8f8f5729a
    Deleted: sha256:17651c6a0ba04d31da14ac6a86d8fb3f600883f9e155558e8aad0b94aa6540a2
    Deleted: sha256:5a673ff4c07a1b606f2ad1fc53697c99c45b0675734ca945e3bb2bd80f43feb8
    PS C:\Users\Peng Xiao\docker.tips\image> docker image ls
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx        latest    f0b8a9a54136   12 days ago   133MB
    PS C:\Users\Peng Xiao\docker.tips\image> docker image load -i .\nginx.image
    1839f9962bd8: Loading layer [==================================================>]   64.8MB/64.8MB
    a2f4f809e04e: Loading layer [==================================================>]  3.072kB/3.072kB
    9b63e6289fbe: Loading layer [==================================================>]  4.096kB/4.096kB
    f7141923aaa3: Loading layer [==================================================>]  3.584kB/3.584kB
    272bc57d3405: Loading layer [==================================================>]  7.168kB/7.168kB
    Loaded image: nginx:1.20.0
    PS C:\Users\Peng Xiao\docker.tips\image> docker image ls
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx        1.20.0    7ab27dbbfbdf   12 days ago   133MB
    nginx        latest    f0b8a9a54136   12 days ago   133MB
    PS C:\Users\Peng Xiao\docker.tips\image>
    Dockerfile 介绍

    Dockerfile介绍

    提示

    Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image. Using docker build users can create an automated build that executes several command-line instructions in succession.

    参考:https://docs.docker.com/engine/reference/builder/

    • Dockerfile是用于构建docker镜像的文件
    • Dockerfile里包含了构建镜像所需的“指令”
    • Dockerfile有其特定的语法规则
    举例:执行一个Python程序

    Dockerfile示例:执行Python程序

    容器及进程,所以镜像就是一个运行这个进程所需要的环境。

    假如我们要在一台ubuntu 21.04上运行下面这个hello.py的Python程序

    hello.py的文件内容:

    代码块
    print("hello docker")

    第一步,准备Python环境

    代码块
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev

    第二步,运行hello.py

    代码块
    $ python3 hello.py
    hello docker
    一个Dockerfile的基本结构

    对应的Dockerfile:

    代码块
    titleDockerfile
    code
    FROM ubuntu:21.04
    RUN apt-get update && \
        DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
    ADD hello.py /
    CMD ["python3", "/hello.py"]

    镜像的构建和分享

    通过 commit 创建镜像

    关于 scratch 镜像

    Scratch是一个空的Docker镜像。

    通过scratch来构建一个基础镜像。

    代码块
    titlehello.c
    #include <stdio.h>
    int main()
    {
        printf("hello docker\n");
    }

    编译成一个二进制文件

    代码块
    $ gcc --static -o hello hello.c
    $ ./hello
    hello docker
    $
    代码块
    titleDockerfile
    FROM scratch
    ADD hello /
    CMD ["/hello"]

    构建

    代码块
    $ docker build -t hello .
    $ docker image ls
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    hello        latest    2936e77a9daa   40 minutes ago   872kB

    运行

    代码块
    $ docker container run -it hello
    hello docker






    目录