开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
docker的出现用来解决什么问题
- web应用部署,配置相同的软件,数据库,web服务器,必要的插件、库等等
- 为了模拟本地相同的开发环境,可以使用虚拟机需要模拟硬件,运行整个操作系统,体积臃肿,内存占用高!
- docker派上用场,docker在概念上和虚拟机非常类似,但是却轻量很多,它不会去模拟底层的硬件,只为每一个应用提供完全隔离的运行环境,你可以在环境中配置不同的工具软件,并且不同环境之间相互不影响,这个环境在docker也被称为container/容器!
docker的三个重要概念
-
image:相当于虚拟机的快照,包含了你要部署的应用程序和它关联的相关库
-
container:相当于一台台运行起来的虚拟机,一个应用软件,多个container可以集成在一个image中
-
docker file:像一个脚本,用于创建之前讲到的镜像,安装操作系统和软件,
docker file 文件的参数
FROM python:3.8-xxx 可以从很多维度上来展开活动,可以选择操作系统来运行,从上面的包管理工具来完成,比如ubuntu上的apt。也可以从语言上入手,例如这里的python等等,这时就会使用最常见的模式来运行,免去了安装步骤。
使用 名称:tag 就可以
WORKDIR 创建你想要的工作路径
COPY 将你的程序拷贝到docker镜像中 (本地路径) (目标路径路径)
. . 代表所有文件复制到你当前的工作路径
RUN 允许在创建镜像时运行任意shell命令
(比如安装相关依赖等等)
CMD 可以指定容器运行起来之后的命令
创建并运行 docker 镜像
docker build -t 你的镜像名 .(dockerfile路径,这里表示当前路径)
完成后使用
docker run -p 80:5000 (当前主机端口:docker端口) -d 镜像名 (后台运行,输出不显示在终端上)
docker volume
docker删除时保留数据,volume当作是一个在本地主机和不同容器中共享的文件夹
docker volume create来进行创建
启动时添加参数 docker run -v volume_name:挂载路径
挂载完成后,后面只要向这里里面写东西,都会被volume记录,可以跨容器
docker compose
需要写一个docker-compose.yml文件
用键值对来写这个文件
version:"3"
services:
web:
build:.
ports:"8302":"80"
db:
image:"mysql"
environment:
MYSQL_DATABASE:123
MYSQL_ROOT_PASSWORD:secret
使用
docker compose up -d
来启动
docker compose可以用来帮助我们完成一个容器挂掉了修复这个容器的情况
docker和kubernetes的关系
kubernetes 可以为一个集群的电脑来提供服务,并做到故障转移、负载均衡等等。
kubernetes就是将各个容器分发到各个集群上运行,并进行全自动化的管理,包括应用的部署和升级。