我们之前讲过《Docker是什么以及到底有什么用》,今天我们来说一说该如何使用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下来,就可以实现环境迁移了。

房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。

领取关 w/x/g/z/h:软件测试小dao

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。