手摸手教学 - Docker(一) 超级爽!创建容器镜像!

手摸手教学,自己来感受~

作者变优秀的小白

Github关注YX-XiaoBai

爱好Americano More Ice !

QQ学习交流群(new): 811792998

基础知识

开始第一个docker命令行

docker run -d -p 80:80 docker/getting-started

你一定注意到有些参数被使用到,参数时什么意思呢?

  • -d - 在后台,以分离模式运行容器(container)
  • -p 80:80 - 将本地host的80端口映射到容器的80端口上
  • docker/getting-started - 使用的镜像

tips: 你也可以组合单个字符的参数以缩短命令
docker run -dp 80:80 docker/getting-started

(base) ~  docker run -d -p 80:80 docker/getting-started
3e15a6d10ba9216e756394da4cd8e1788a2fcb5260e6797633622b861a337bdd

docker面板

当你下载好 docker 会有一个面板,打开面板,你会在上面看到正在运行的容器,比如我们刚刚运行的容器

在这里插入图片描述

必须知道的两个概念

什么是容器呢?

现在我们已经运行过一个容器了,那什么是容器呢?简而言之,它只是你计算机中与其他在主机运行的进程隔离的另一个进程

什么是容器镜像呢?

当我们运行容器时,它使用与主机隔离的文件系统(filesystem)。这个自定义文件系统是由容器(container)镜像(image)提供的。因为镜像中包含容器的文件系统,它就必须运行一个应用(application)的所有东西 - 包含所有依赖(dependencies)、配置(configuration)、脚本(scripts)、二进制文件(binaries)等等。镜像也包含容器的其他配置,例如环境变量、默认运行命令和其他属性。

docker应用

获取应用

获取一下源码,以便于进行下一步

git clone https://github.com/YX-XiaoBai/application.git

构建应用的容器镜像

为了构建应用,我们需要用一个Dockerfile。一个Dockerfile是一个基于text的指令脚本用于创建容器镜像

  1. 创建一个Dockerfilepackage.json同目录下,主要不可加.txt等文件后缀
FROM node:12-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
  1. 现在来构建用docker build来构建容器镜像

docker build -t getting-started

这个Dockerfile主要做了几件事

  • 你可能注意到下载了很多layers,这是因为我们想要从node:12-alpine镜像中指示构建者,但是因为我们没有自己的机器,所以需要下载镜像
  • 在镜像下载完成后,我们复制我们的应用application并且用yarn下载我们的依赖。
  • CMD指定当镜像在容器中启动时的默认命令
  • 最后-t标识我们的镜像,由于我们命名镜像为getting-started,因此当我们运行一个容器会参考这个镜像
  • 命令行最后的.告诉Docker应该在当前目录下寻找Dockerfile

在这里插入图片描述

补充:构建时可能会遇到的报错
在这里插入图片描述
遇到这个报错只是简单的超时,只要重新执行命令docker build -t getting-started .即可

启动一个App容器

现在我们已经有了一个自己的镜像,让我们尝试运行它吧~ 还记的运行命令吗?

  1. 启动我们的容器通过docker run命令且标明我们刚刚镜像的名称

docker run -dp 3000:3000 getting-started

在这里插入图片描述

还记得-d-p参数吗?不记得就看下上面👆。我们正在运行的新容器是以隔离模式启动和创建一个映射在本地端口3000和容器端口3000之间,若没有端口映射,我们不可能获取到这个应用

  1. 等待几秒,打开http://localhost:3000你就可以看到我们刚刚创建的应用了

在这里插入图片描述

  1. 可以尝试在打开的页面上操作,如添加一个item、删除item、标记item

在这里插入图片描述

  1. 打开Docker Dashboard你可以看到有两个容器正在运行(即我们刚刚尝试的容器)

在这里插入图片描述

总结

本本章中,我们一起学习了有关构建ContainerImage的基础知识,并创建了一个Dockerfile来完成此操作。也见证了构建好的应用,运行容器,操作我们完成的应用

后面我们会继续一起学习有趣的Docker!

结束语:大家如果遇到什么疑问或者建议的,可直接留言评论!作者看到会马上一一回复!

如果觉得小白此文章不错或对你有所帮助,期待ni的一键三连💫!❤️ni!
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值