实践经验:应该如何使用Docker?

本文详细介绍了Docker的三大核心概念——镜像、容器和仓库,并通过实例演示如何构建、使用和迁移镜像。学习如何从零开始创建镜像并上传到仓库,实现软件环境的无缝迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
我们之前讲过《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下来,就可以实现环境迁移了。

最后也为大家准备了一份配套的学习资源,你可以点击下方,自行免费获取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值