Docker容器技术与应用 之 Docker镜像操作

介绍:什么是Docker

Docker 是一种开源的应用容器引擎,它允许开发人员将应用及其依赖项打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 的主要优势在于它提供了一种快速、一致的部署环境,简化了应用的分发、测试和部署过程。它使得开发者可以轻松地在不同的环境中运行相同的应用,无论是在本地开发环境、测试环境还是生产环境。

Docker 包含以下几个核心概念:

1. **镜像(Images)**:Docker 镜像是容器的基础。镜像包含了文件系统和应用运行所需的所有内容,可以看作是容器的“蓝图”。

2. **容器(Containers)**:容器是镜像运行时的实例。当一个镜像被启动时,它会变成一个或多个容器。

3. **仓库(Repositories)**:仓库是集中存放镜像文件的地方。Docker Hub 是最知名的公共仓库,用户可以在其中找到并下载各种官方和社区提供的镜像。

4. **Dockerfile**:这是一个文本文件,包含了构建 Docker 镜像的指令。通过 Dockerfile,可以自动化镜像的创建过程。

5. **守护进程(Docker Daemon)**:这是 Docker 的后台运行进程,负责接收 Docker 命令、管理 Docker 容器等。

6. **客户端和服务器(Client-Server)**:Docker 客户端通过命令行接口与 Docker 守护进程通信,而 Docker 守护进程则可以在本地或远程服务器上运行。

Docker 通过这些概念和工具,为开发者和系统管理员提供了一种高效的方式来打包、分发和运行应用。它已经成为云计算和微服务架构中不可或缺的一部分。



实际操作:

Docker官网镜像网站:[**https://hub.docker.com/**](https://hub.docker.com/)

去查看如何使用aliyun的docker镜像库

**国内比较好的镜像源:网易蜂巢、aliyun和daocloud**

Docker 镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。Docker 使用  UnionFS 来将这些层联合到单独的镜像中。正因为有了这些层的存在,Docker  是如此的轻量。当你改变了一个 Docker  镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新的层被添加或升级了。

 镜像搜索

公有的 Docker  仓库名字是 Docker Hub。Docker Hub  提供了庞大的镜像集合供用户使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。

镜像名称:仓库名称+镜像分类+tag名称(镜像版本)

```

docker.io/library/nginx:v1

docker.io/library/nginx:latest

daocloud.io/library/nginx

```

镜像ID:64位的id号,一般我们看到的是12位的我们称之为短ID,只要我们每个ID号不冲突就可以了

在下载镜像前,可以使用docker search命令搜索远端官方仓库中的共享镜像

```

[root@docker1 ~]# docker search lamp

 

NAME                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED

mattrayner/lamp                           A simple LAMP docker image running the prere…   328                                     [OK]

linode/lamp                               LAMP on Ubuntu 14.04.1 LTS Container            182                                    

tutum/lamp                                Out-of-the-box LAMP image (PHP+MySQL)           150                                    

```

获取镜像

```

[root@docker1 ~]# docker pull nickistre/centos-lamp

 

Using default tag: latest

latest: Pulling from nickistre/centos-lamp

f9f73d801f05: Pull complete

31a920671517: Pull complete

21c34a1a7bde: Pull complete

dc05bf237fc1: Pull complete

001edf96df50: Pull complete

273de3312284: Pull complete

09e0c479c5d6: Pull complete

3274b3252b64: Pull complete

8affd66070d7: Pull complete

b3d0f4e847ac: Pull complete

1b0c18851735: Pull complete

557b86c40b14: Pull complete

bdf3abef29b4: Pull complete

8fab0cd5d21a: Pull complete

4f198432c128: Pull complete

Digest: sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d

Status: Downloaded newer image for nickistre/centos-lamp:latest

```

查看镜像信息

```

[root@docker1 ~]# docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

nickistre/centos-lamp   latest              0b8d572d1c7d        4 years ago         547MB

[root@docker1 ~]# docker inspect  0b8d

[

    {

        "Id": "sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44",

        "RepoTags": [

            "nickistre/centos-lamp:latest"

        ],

        "RepoDigests": [

            "nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d"

        ],

        "Parent": "",

        "Comment": "",

        "Created": "2018-04-13T21:01:31.472818372Z",

        "Container": "25f7679db9909e1a5f63456ad2297c5eaaa8ca4c4f02991e678fc38af39e8762",

        "ContainerConfig": {

            "Hostname": "25f7679db990",

            "Domainname": "",

            "User": "",

            "AttachStdin": false,

            "AttachStdout": false,

            "AttachStderr": false,

            "ExposedPorts": {

                "22/tcp": {},

                "443/tcp": {},

                "80/tcp": {}

            },

            "Tty": false,

            "OpenStdin": false,

            "StdinOnce": false,

            "Env": [

                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

            ],

            "Cmd": [

                "/bin/sh",

                "-c",

                "#(nop) ",

                "CMD [\"supervisord\" \"-n\"]"

            ],

            "ArgsEscaped": true,

            "Image": "sha256:23865469389846bddf3e091a0484f8e28cad879295c6f8e3a839b05137c079fc",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": [],

            "Labels": {}

        },

        "DockerVersion": "17.06.1-ce",

        "Author": "Nicholas Istre <nicholas.istre@e-hps.com>",

        "Config": {

            "Hostname": "",

            "Domainname": "",

            "User": "",

            "AttachStdin": false,

            "AttachStdout": false,

            "AttachStderr": false,

            "ExposedPorts": {

                "22/tcp": {},

                "443/tcp": {},

                "80/tcp": {}

            },

            "Tty": false,

            "OpenStdin": false,

            "StdinOnce": false,

            "Env": [

                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

            ],

            "Cmd": [

                "supervisord",

                "-n"

            ],

            "ArgsEscaped": true,

            "Image": "sha256:23865469389846bddf3e091a0484f8e28cad879295c6f8e3a839b05137c079fc",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": [],

            "Labels": null

        },

        "Architecture": "amd64",

        "Os": "linux",

        "Size": 546979929,

        "VirtualSize": 546979929,

        "GraphDriver": {

            "Data": {

                "DeviceId": "16",

                "DeviceName": "docker-8:3-152393378-6d89a9f2382f92c4106f1cdaa58acd6ca9c4d095c87aef69f5b6f6072e03d716",

                "DeviceSize": "10737418240"

            },

            "Name": "devicemapper"

        },

        "RootFS": {

            "Type": "layers",

            "Layers": [

                "sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e",

                "sha256:244de8069fbc70a188607a8dddab80ad8866a4e0bcb0b24f12aef0130ba307f2",

                "sha256:988e3cb5a27b1efc0c85c3d9b34b25322de3ce13267d647a869f9150cd3c3f7f",

                "sha256:38556f5b76216ba7518d1da1f2ea0c7ac147203833976c5a701fb36d71e17ec6",

                "sha256:e6eea089f108513a9af6006efe53cff5ef762bc4be503ce8eaa1c6c726cae2ed",

                "sha256:07d45adf0b976b610bfbbc6f9cc30a133d18f69262a9446bc280f542bd17d743",

                "sha256:a0753067e202b570fa8c70f86ae2e0510f82f2271a0d5c1db5cbb4f9a9210cc3",

                "sha256:9b9518d71f0ef4b967d786f7f40943658362af00b5e9f91f43053619b75bf07b",

                "sha256:11ed4ddf1f28ad2857c7b3f17eee8c349fd9011042cf563807493bbddb2f3f46",

                "sha256:fa3e2c4d1489e48588c4a08443edb471234a481dd52b341b211909d35e5787ca",

                "sha256:f874a4141753cd042dbdcfc0acb48c8239de9a1d42b4902defe79ea6042cfc62",

                "sha256:fabd844fa786a84bcd481f617becfbc31b85e927b4b24a56acc5283c1ad5ea76",

                "sha256:d31fcd4e52cffcbf6c8ff68a19609d4a7ae56e43f7ad41865dd7b1341ca70977",

                "sha256:2ccc0c68e26e5ac575aa7f7822638d547b5a3c703c73c004a40b19388f582bda",

                "sha256:385f382ed46ca3e95842ce6074deb140cc11784744882adea64e27a24eeddaa8"

            ]

        },

        "Metadata": {

            "LastTagTime": "0001-01-01T00:00:00Z"

        }

    }

]

[root@docker1 ~]# docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

nickistre/centos-lamp   latest              0b8d572d1c7d        4 years ago         547MB

[root@docker1 ~]# docker tag nickistre/centos-lamp lamp:lamp

[root@docker1 ~]# docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

lamp                    lamp                0b8d572d1c7d        4 years ago         547MB

nickistre/centos-lamp   latest              0b8d572d1c7d        4 years ago         547MB

```

删除镜像

```

[root@docker1 ~]# docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

lamp                    lamp                0b8d572d1c7d        4 years ago         547MB

nickistre/centos-lamp   latest              0b8d572d1c7d        4 years ago         547MB

[root@docker1 ~]# docker rmi lamp:lamp

Untagged: lamp:lamp

[root@docker1 ~]# docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

nickistre/centos-lamp   latest              0b8d572d1c7d        4 years ago         547MB

```

注意:

当一个镜像有多个标签的时候,docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件,相当于只删除了镜像0b8d572d1c7d的一个标签。但当该镜像只剩下一个标签的时候,再使用删除命令就会彻底删除该镜像。

例如,删除nickistre/centos-lamp镜像,就会删除整个镜像文件的所有层。

```

[root@docker1 ~]# docker rmi nickistre/centos-lamp

Untagged: nickistre/centos-lamp:latest

Untagged: nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d

Deleted: sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44

Deleted: sha256:ac1f500d470a0d21ed6ed9e2132d86b5d636721d2d3301c9932136dc0d03c18e

Deleted: sha256:39595439de2a48c9d23506f76ad810902e3944f2cec2eb730b5a17ba48888bdb

Deleted: sha256:ef99b0f2358f87fb0a8d835835a1f15e557257397ca38db499165725d002a221

Deleted: sha256:82c70ac1157f6619be0415859d8d4201c5c7eef31a189214aa9924819d5b9a3a

Deleted: sha256:bad51cc6d300486ffcbdfd227eda325e5da3c176fd05d2036f581ec87a24956c

Deleted: sha256:09a51d85abc0e82c8ac8d8990fafab6cfedc80c7a2152e6fbac0fea31c9ae550

Deleted: sha256:26ab098c4e7de9c0f5d2bdb84d0e89ff3d8c6693594605dcbb005f93428176a0

Deleted: sha256:5638af005abf6a9991c71e49a784ebc43b606867207c9557fad3eb319e1f5e57

Deleted: sha256:95eabe3b5d839ad6652938d67818f09e6e7a8d1dc94a5da3be5d9fa0726280ce

Deleted: sha256:cd4013e7fada12e92334ba2f85618175ce5b8521011146c9bb04209cb6cd4b1a

Deleted: sha256:33ebf7adc5511801e6ec775de4b00ff7d54a7e9b01c91969afe139ba460c7659

Deleted: sha256:64b87534723ca654a93a98d53374157d5aa68384f29390676103c46f56af7f44

Deleted: sha256:1f12d6f0a489a1ddc36f2208ec4e1334434cd5f54c7ab3db125ec88f716bdfc6

Deleted: sha256:863dfcf52855b4020e42ffeefb84488ad4e7cb9156f7181310e1aea35e640cc3

Deleted: sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e

```

存出镜像和载入镜像

```

[root@docker1 ~]# docker pull nickistre/centos-lamp    ###拉取镜像
[root@docker1 ~]# docker save -o lamp nickistre/centos-lamp
[root@docker1 ~]# ls -l lamp

-rw------- 1 root root 563599360 Mar  1 04:28 lamp

```

载入镜像

```

[root@docker1 ~]# scp lamp root@192.168.200.12:/root

[root@docker2 ~]# docker load -i lamp

da6517724f67: Loading layer  213.2MB/213.2MB

244de8069fbc: Loading layer  10.37MB/10.37MB

988e3cb5a27b: Loading layer  179.7MB/179.7MB

38556f5b7621: Loading layer  47.41MB/47.41MB

e6eea089f108: Loading layer  3.072kB/3.072kB

07d45adf0b97: Loading layer  21.89MB/21.89MB

a0753067e202: Loading layer  51.79MB/51.79MB

9b9518d71f0e: Loading layer  18.52MB/18.52MB

11ed4ddf1f28: Loading layer  2.891MB/2.891MB

fa3e2c4d1489: Loading layer  17.71MB/17.71MB

f874a4141753: Loading layer  8.704kB/8.704kB

fabd844fa786: Loading layer  9.728kB/9.728kB

d31fcd4e52cf: Loading layer   2.56kB/2.56kB

2ccc0c68e26e: Loading layer  3.584kB/3.584kB

385f382ed46c: Loading layer  3.584kB/3.584kB

Loaded image: nickistre/centos-lamp:latest

[root@docker2 ~]# docker images

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE

nickistre/centos-lamp    latest              0b8d572d1c7d        4 years ago         547MB

```

上传镜像

```

[root@docker1 ~]# docker tag nickistre/centos-lamp liuzhi001/lamp:centos7

注:liuzhi001为一个名字
[root@docker1 ~]# docker images

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE

liuzhimin001/lamp       centos7             0b8d572d1c7d        4 years ago         547MB

nickistre/centos-lamp   latest              0b8d572d1c7d        4 years ago         547MB

[root@docker1 ~]# docker login

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.

Username: liuzhimin001

Password:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@docker1 ~]# docker push liuzhimin001/lamp:centos7

```


 

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值