Docker实践二

280 阅读3分钟

这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战

如何使用Docker

一、Docker的三大核心概念
  • 镜像
  • 容器
  • 仓库

还是举个例子:我们在空地上造房子,我们运砖块,再运木头,然后一顿操作把房子盖起来;过了两年,政府来拆迁了。怎么办?

我们得换个地方造房子去了,这个时候,按照之前的,我得再次运砖块,运木头,然后再一顿操作把房子盖起来;但这次,来了一个叫

Docker的靓仔,教了我一句咒语,用了这个咒语,就可以把我原来盖好的房子,打包成一个镜像,塞到我的背包里,等我到了另一块空

地,就用这个镜像,直接把房子构建出来,原模原样拎包入住。

上面的例子里,放在包里的镜像,就是Docker镜像,背包就是Docker仓库,利用镜像构建的房子就是Docker容器了。这个容器才是我们

最终要住进去的地方,所以这个容器才是程序运行的地方

二、镜像
docker images命令查看本地存在的镜像
[root@VM-0-17-centos ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               13b66b487594        4 months ago        197MB
redis               rc-alpine3.12       5bca63d382f8        8 months ago        32.3MB
redis               latest              ef47f3b6dc11        8 months ago        104MB
mysql               5.7                 ef08065b0a30        11 months ago       448MB
ubuntu              15.10               9b9cb95443b5        5 years ago         137MB

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

    同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 14.04、15.10 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

[root@VM-0-17-centos ~]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                            PORTS                               NAMES
43b022f0dc1b        ubuntu:14.04          "/bin/bash"              11 minutes ago      Exited (127) About a minute ago                                       beautiful_ishizaka
5dc5b452764a        ubuntu:15.10          "/bin/bash"              14 minutes ago      Exited (130) 13 minutes ago                                           affectionate_wozniak
0617a905d18f        redis:rc-alpine3.12   "docker-entrypoint.s…"   16 minutes ago      Exited (0) 16 minutes ago                                             elated_nash
4edca6117751        redis:rc-alpine3.12   "docker-entrypoint.s…"   17 minutes ago      Exited (127) 16 minutes ago                                           musing_hopper
8f55fbd844e1        redis                 "docker-entrypoint.s…"   4 months ago        Up 4 months                       0.0.0.0:6379->6379/tcp              redis_wd
4969aaf7caa2        redis                 "docker-entrypoint.s…"   7 months ago        Exited (137) 4 months ago                                             redis-api
c8c15320bd4d        redis                 "docker-entrypoint.s…"   7 months ago        Exited (137) 7 months ago                                             redis-test
08be69defcbd        mysql:5.7             "docker-entrypoint.s…"   10 months ago       Up 2 months                       33060/tcp, 0.0.0.0:3309->3306/tcp   mysql_57
[root@VM-0-17-centos ~]# docker rm 43b022f0dc1b 5dc5b452764a
43b022f0dc1b
5dc5b452764a

构建镜像

镜像除了从公共仓库拉取,当然也可以在本地从零开始构建;我们使用命令 docker build , 从零开始来创建一个新的镜像;

docker build -f /path/to/a/Dockerfile

-f标志指向文件系统中任何位置的Dockerfile;关于Dockerfile文件可以在百度上找一下写法,后面我也会单独开一篇文章来写

镜像构建完成后上传到docker仓库,到另外的机子上再docker pull下来,就可以实现环境迁移了。

下一篇继续将【docker容器】。