美文网首页
Docker 4. 使用镜像

Docker 4. 使用镜像

作者: Jason数据分析生信教室 | 来源:发表于2021-09-16 21:20 被阅读0次

    镜像是 Docker 的三大组件之一。
    Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。

    获取镜像

    从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

    $ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    
    • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。
      默认地址是 Docker Hub(docker.io)。
    • 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

    举个例子

    $ docker pull ubuntu:18.04
    18.04: Pulling from library/ubuntu
    92dc2a97ff99: Pull complete
    be13a9d27eb8: Pull complete
    c8299583700a: Pull complete
    Digest: sha256:4bc3ae6596938cb0d9e5ac51a1152ec9dcac2a1c50829c74abd9c4361e321b26
    Status: Downloaded newer image for ubuntu:18.04
    docker.io/library/ubuntu:18.04
    

    上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub (docker.io)获取镜像。而镜像名称是 ubuntu:18.04,因此将会获取官方镜像 library/ubuntu 仓库中标签为 18.04 的镜像。docker pull 命令的输出结果最后一行给出了镜像的完整名称,即: docker.io/library/ubuntu:18.04。

    运行

    有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以上面的 ubuntu:18.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。

    $ docker run -it --rm ubuntu:18.04 bash
    
    root@e7009c6ce357:/# cat /etc/os-release
    NAME="Ubuntu"
    VERSION="18.04.1 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.1 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    

    docker run 就是运行容器的命令,具体格式会在容器环节里进行详细介绍,在这里简要的说明一下上面用到的参数。

    • -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
    • --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
    • ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。
    • bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash。

    进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。这里,我们执行了 cat /etc/os-release,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 Ubuntu 18.04.1 LTS 系统。
    最后我们通过 exit 退出了这个容器。

    删除本地镜像

    果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:

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

    用 ID、镜像名、摘要删除镜像

    其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。
    比如我们有这么一些镜像:

    $ docker image ls
    REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
    centos                      latest              0584b3d2cf6d        3 weeks ago         196.5 MB
    redis                       alpine              501ad78535f0        3 weeks ago         21.03 MB
    docker                      latest              cf693ec9b5c7        3 weeks ago         105.1 MB
    nginx                       latest              e43d811ce2f4        5 weeks ago         181.5 MB
    

    我们可以用镜像的完整 ID,也称为 长 ID,来删除镜像。使用脚本的时候可能会用长 ID,但是人工输入就太累了,所以更多的时候是用 短 ID 来删除镜像。docker image ls 默认列出的就已经是短 ID 了,一般取前3个字符以上,只要足够区分于别的镜像就可以了。
    比如这里,如果我们要删除 redis:alpine 镜像,可以执行:

    $ docker image rm 501
    Untagged: redis:alpine
    Untagged: redis@sha256:f1ed3708f538b537eb9c2a7dd50dc90a706f7debd7e1196c9264edeea521a86d
    Deleted: sha256:501ad78535f015d88872e13fa87a828425117e3d28075d0c117932b05bf189b7
    Deleted: sha256:96167737e29ca8e9d74982ef2a0dda76ed7b430da55e321c071f0dbff8c2899b
    Deleted: sha256:32770d1dcf835f192cafd6b9263b7b597a1778a403a109e2cc2ee866f74adf23
    Deleted: sha256:127227698ad74a5846ff5153475e03439d96d4b1c7f2a449c7a826ef74a2d2fa
    Deleted: sha256:1333ecc582459bac54e1437335c0816bc17634e131ea0cc48daa27d32c75eab3
    Deleted: sha256:4fc455b921edf9c4aea207c51ab39b10b06540c8b4825ba57b3feed1668fa7c7
    

    我们也可以用镜像名,也就是 <仓库名>:<标签>,来删除镜像。

    $ docker image rm centos
    Untagged: centos:latest
    Untagged: centos@sha256:b2f9d1c0ff5f87a4743104d099a3d561002ac500db1b9bfa02a783a46e0d366c
    Deleted: sha256:0584b3d2cf6d235ee310cf14b54667d889887b838d3f3d3033acd70fc3c48b8a
    Deleted: sha256:97ca462ad9eeae25941546209454496e1d66749d53dfa2ee32bf1faabd239d38
    

    当然,更精确的是使用 镜像摘要 删除镜像。

    $ docker image ls --digests
    REPOSITORY                  TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
    node                        slim                sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228   6e0c4c8e3913        3 weeks ago         214 MB
    
    $ docker image rm node@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228
    Untagged: node@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228
    

    相关文章

      网友评论

          本文标题:Docker 4. 使用镜像

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