Docker 总结

我对Docker的理解虽然不太透彻,但我会总结一下自己的感受。

我强迫自己学习的教材如下

Docker 是什么

・我脑海中有一个关于搭建环境的 Github 的概念。
・通过在Hub上上传一个被称为“雏形”的概念图,可以与他人共享环境。
・由于将环境进行代码化,因此在团队开发中是必不可少的。
・可以在开发环境和生产环境下几乎使用相同的条件进行实施。
・因此,在现代企业中几乎被广泛应用。

Image from Gyazo

参考:Docker超入门②〜如何开始使用Docker〜【适合初学者】。

流れ如上图所示。

只需要一种选项:
① 从名为 Dockerfile 的环境设计图创建镜像
② 然后创建容器
③ 在容器内构建可复现的环境

Dockerfile 是什么

・一个共享环境的设计图
・在想要共享的文件夹的相同层次创建
・通过构建来创建共享文件夹的图像(环境模板)

以下是源代码的一个例子

FROM ruby:2.7

ENV RAILS_ENV=production

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
  && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
  && apt-get update -qq \
  && apt-get install -y nodejs yarn
WORKDIR /app
COPY ./src /app
RUN bundle config --local set path 'vendor/bundle' \
  && bundle install

COPY start.sh /start.sh
RUN chmod 744 /start.sh
CMD ["sh", "/start.sh"]

参考: Docker初学者入门讲座综合版 | 从零实践的四小时全套课程

什么是映像容器?

从Dockerhub这个服务上将镜像安装到本地并使用,
镜像中包含了像ubuntu这样的操作系统以及像postgresql、MySQL这样的中间件,
还有像ruby、PHP这样的编程语言等。
通过Dockerfile来创建镜像,
也就是从Dockerhub上安装软件。
然后通过这个镜像来启动容器,
以重现工作环境在容器内进行。

容器和虚拟机的区别

以下是我个人觉得容易理解的:

Image from Gyazo

请参考《Docker入门指南①- 什么是Docker?- 适合初学者》

在使用大量资源时,虚拟机是一种节能方式;而 Docker 则不能在 Mac 上运行 Windows 的电脑游戏,但虚拟机可以。

学习的利与弊

优点

・学习基础设施知识
・不再害怕AWS和Heroku
・学习互联网知识
・如果以后要进行测试自动化等工作,知识将是必需的
・换句话说,似乎就业后也是必不可少的
・听说在就业活动中受到高度评价

缺点

・学习成本高
・有很多不明白的事情,让人觉得灰心丧气
说实话,这就是全部

其他

・我对Docker-machine、docker-compose和Docker-swarm等东西还不太了解。
・我对VPC等也真的不太了解。我对互联网的基本知识缺乏。
・我还不太清楚在开发中实际使用它们的好处。

bannerAds