Docker学习笔记

目录

文章目录

前言

一、Docker是什么?

二、Docker 的优点

1、快速,一致地交付您的应用程序

2、响应式部署和扩展

3、在同一硬件上运行更多工作负载

三、安装Docker

配置Docker镜像加速器

四、Docker架构

 五、Docker命令

1.常用命令

六、Docker容器的数据卷

总结

数据卷的作用:

配置数据卷

 七、Docker应用部署

以部署MySql为例

 八、Docker镜像原理

 Dockerfile

 ​Dockerfile关键字参考

九、导入springboot案例

总结


本文是根据下方的视频进行学习的:黑马程序员Docker容器化技术,从零学会Docker教程_哔哩哔哩_bilibili

文章目录

目录

文章目录

前言

一、Docker是什么?

二、Docker 的优点

1、快速,一致地交付您的应用程序

2、响应式部署和扩展

3、在同一硬件上运行更多工作负载

三、安装Docker

配置Docker镜像加速器

四、Docker架构

 五、Docker命令

1.常用命令

总结



前言

一、Docker是什么?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

换句话说:我们写的代码会接触到好几个环境:开发环境、测试环境、生产环境。

由于环境的不同,代码可能会无法运行,即造成了代码的“水土不服”。Docker就是将代码与环境一并包装进一个容器。从而解决这一“水土不服”问题

二、Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  • 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
  • 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2、响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

三、安装Docker

Docker官网:Home - Docker

配置Docker镜像加速器

在这里我们配置阿里云的镜像 

阿里云官网:

https://www.aliyun.com/

登录完成后再点击下面的网址,根据官方操作修改镜像就可以了

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

Docker学习笔记_第1张图片

四、Docker架构

Docker学习笔记_第2张图片

 五、Docker命令

 Docker 命令大全 | 菜鸟教程

1.常用命令

Docker学习笔记_第3张图片

Docker学习笔记_第4张图片

Docker学习笔记_第5张图片

 Docker学习笔记_第6张图片

 上方图片来来自最上方视频内容截图

六、Docker容器的数据卷

定义:docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了,为了能够保存数据,在docker容器中使用卷

情景:数据存放在容器中,如果将容器删除,数据就会丢失。如果有多个容器,那么它们也可能发生这种情况。所以容器间需要一个数据共享的技术,将容器中产生的数据同步到本地,即将容器内的目录挂载到Linux上,这就是容器数据卷。

总结

  • 数据卷是宿主机中的一个目录或者是文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以同时挂载多个数据卷

数据卷的作用:

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间数据交换

配置数据卷

创建容器时,使用-v参数设置数据卷

docker run ..... -v 宿主机目录(文件):容器内目录(文件)....

注意事项:

  1. 目录必须是绝对路径
  2. 如果目录不存在,则自动创建
  3. 可以挂载过个数据卷

 七、Docker应用部署

以部署MySql为例

1.搜索mysql镜像

docker search mysql

2.拉取mysql镜像

docker pull mysql:5.6 //需要的版本号

3.创建容器,设置端口映射、目录映射

docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=aaa111 \
mysql:5.6

参数说明:
-p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
-e MYSQL_ROOT_PASSWORD=aaa111:初始化 root 用户的密码。

进入容器,操作mysql

docker exec –it c_mysql /bin/bash

使用外部机器连接容器中的mysql,注意连接时 需要填写宿主机的IP地址+端口号

Docker学习笔记_第7张图片

可以以同样的方式部署tomcat、Nginx等

 八、Docker镜像原理

Docker镜像实际上是由一层一层文件系统组成,这种层级文件系统就是UnionFS

Docker学习笔记_第8张图片

当用docker run启动这个容器时,实际上在镜像的顶部添加了一个新的可写层。这个可写层也叫容器层。

Docker学习笔记_第9张图片

 Docker镜像层如下图所示:

Docker学习笔记_第10张图片

Docker负责堆叠这些镜像层,每个 Docker 镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层

Docker学习笔记_第11张图片

 Dockerfile

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。

dockerfile 用于指示 docker image build 命令自动构建Image的源代码
是纯文本文件

可以参考下方链接,直接搜索

Docker Hub

 以centos为

Docker学习笔记_第12张图片

 Docker学习笔记_第13张图片

 Docker学习笔记_第14张图片Dockerfile关键字参考

Docker容器——Dockerfile中常用的关键词_CN華少的博客-CSDN博客

九、导入springboot案例

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(docker)