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

发表于:2022-2-22 09:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:无敌大白    来源:掘金

#
Docker
  我们之前讲过《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下来,就可以实现环境迁移了。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号