docker入门与部署微服务--学习笔记

时间:2023-03-08 17:07:38

最近公司进一步去windows,走向 linux+云化。

原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的。

故学习了docker入门的相关内容。

主要内容如下附件中的PDF进行了学习,---当然,也可以对照docker的官方文档一步步深入学习。

https://blog.docker.com/2016/09/build-your-first-docker-windows-server-container/

docker入门与部署微服务--学习笔记

2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。
但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?今天就来详
细解释,帮助大家理解它,还带有简单易懂的实例,教你如何将它用于日常开发。
Docker简介
 Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础
设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试
以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
Docker的优点如下:
1、简化程序
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何
流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直
接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要
用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
2、避免选择恐惧症
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;
Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比
如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都
可以打包成一个镜像部署。
3、节省开支
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了
高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解
决了硬件管理的问题,也改变了虚拟化的方式。
Docker的架构

docker入门与部署微服务--学习笔记

Docker daemon( Docker守护进程)
Docker daemon是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过
Docker客户端与之通信。
Client( Docker客户端)
Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker
daemon通信。图中, docker build等都是 Docker的相关命令。
Images( Docker镜像)
Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有
点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜
像中的程序。
Container(容器)
容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关
系。可通过 Docker API或者 CLI命令来启停、移动、删除容器。
Registry
Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在
当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可
借助 Docker Registry来避免镜像的手动复制。
一个 Docker Registry可包含多个 Docker仓库,每个仓库可包含多个镜像标签,每个
标签对应一个 Docker镜像。这跟 Maven的仓库有点类似,如果把 Docker Registry
比作 Maven仓库的话,那么 Docker仓库就可理解为某jar包的路径,而镜像标签则可
理解为jar包的版本号。
Docker 的安装
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为
CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发
者一般用不到。下面的介绍都针对社区版。
Docker CE 的安装请参考官方文档。

--------------------------------------------

其中一个练习的小曲折就是第一次写Dockerfile ,直接复制的 pdf中的命令。然后一直报错。

docker入门与部署微服务--学习笔记

将上面两句,复制到Dockerfile。 然后运行docker build ,结果一直报错:

/bin/sh: : cannot create /usr/share/nginx/html/index.html: Directory nonexistent

docker入门与部署微服务--学习笔记

----最后找到结果是空格引起的, 复制进去的空格,和手动打的空格是不一样的,重新敲了一遍空格,就好了。初步判断是字符集的问题。

希望可以帮到相同问题的人。

--------------------------------------------

学习资料如下:
docker入门与部署微服务

感谢,图灵学院,诸葛老师提供的公开课资料