首先需要了解基础概念,我们首先需要了解什么是docker,以及docker内的一些概念,以及为什么要使用docker?
首先先介绍基础概念
1.镜像:Docker镜像是一个只读的模板,包含了运行应用程序所需的文件系统、库、依赖关系以及配置信息等。
它可以被理解为一个打包了应用程序及其运行环境的轻量级、可移植的容器镜像。
2.容器:Docker容器是镜像的运行实例,是镜像的一个可执行进程。
它包含了运行应用程序所需的所有内容,包括代码、运行时、系统工具、系统库等,并且是一个独立、可执行的环境。
说白了就是镜像就是软件包,容器就是运行这个软件包的一个程序一样。
- 镜像与容器的联系:
-
- 容器是基于镜像创建的。每个容器都有一个与之对应的镜像,这个镜像定义了容器的初始状态。
- 容器在运行时,会加载镜像中的文件系统、库、依赖关系等,并在这个基础上执行应用程序。
- 镜像与容器的区别:
-
- 镜像是静态的、不可更改的模板,而容器是镜像的一个动态运行实例。
- 镜像是用于分发和部署的,而容器是用于运行和管理应用程序的。
为什么要使用docker呢?
这个问题就很简单了,如果我们要想在其他服务器或者电脑上去运行我们的一个项目,我们就要花很长的时间去下载对应的环境,如果这个项目牵扯的环境特别多,就会导致部署非常麻烦,那有没有什么方法可以简化部署呢?
那就可以使用docker了,他可直接帮我们部署环境,而且只下载需要使用的部分,不会占用大量内存。
具体的好处可以上网查询。
废话不多说,直接进入部署环节:
docker的部署也很简单,就是写一个dockerfile文件,执行就可以了
有人可能会好奇为什么要写这个dockerfile文件,他是干什么的呢?
接下来就简单介绍一下什么是dockerfile。
dockerfile就是一个指令集,运行这个指令集,他就会将这些指令一一进行,帮助我们下载所需要配置的环境。
简单地说,它是一个描述要做的事情的一个清单,这要把它写好,计算机就会按照这个清单把要下载的东西下载好。
既然如此要如何去写这个docker文档呢?
这里以go为例写一个分段式的docker文件的编写:
docker build -t your_name .
这个命令就是创建一个你的项目的镜像的命令,后面的点不要忘记。
docker ps
这个命令用来查看我们的容器运行情况:
往往在实际的开发里面的web,涉及的到内容往往非常多。
比如redis,mysql,nginx等等一系列的内容,一个一个部署又非常的麻烦,
那有什么快速部署,启动他们的方法嘛?
当然有,那就是docker-compose.yml
它可以同时部署多个容器,并且同时启动。
具体就展示一个例子,来看他是如何实现的吧:
(这也就是一个展示,具体的内容还是上网搜索即可。)
再导入数据库的时候我们会发现,我们并没有将数据库的信息导入,这里docker提供了一个方法:
编写一个这样名字的文件夹,将sql放入,docker会在你部署的时候自动执行这个sql文件
或者就是在docker-compose.yml的cmd执行,也是可以的。
docker-compose up -d
就是通过docker-compose创建一个大镜像
Docker Compose | 菜鸟教程
除此之外,我们还要学会如何部署mysql,redis等等,可以参考这个文档
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.39
这个:后面是版本,如果是latest,意思就是默认最新版本,尽量与自己版本对齐哦
docker的实例化工具:docker desktop还要别的,本人用的是这个。
更多想学习go语言的,都可以看我语雀笔记,可以为我提出意见,嘿嘿。