Docker是一种开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows上。
Docker的主要优点包括:
- 可移植性:Docker允许开发者将应用及其所有依赖项打包到一个可移植的容器中,然后轻松地将其从一个环境部署到另一个环境。
- 简化开发:通过Docker,开发者可以在隔离的环境中运行和测试他们的应用,这大大简化了应用的开发和部署过程。
- 可扩展性:Docker可以很容易地实现横向和纵向的扩展。这意味着它可以轻松应对应用的高峰期,也可以在需求减少时缩减规模。
- 高效:Docker容器在主机上运行,这使得资源管理更加高效,因为它们共享相同的基础操作系统。此外,Docker只加载一次运行时需要的资源,这大大提高了性能。
- 社区支持:Docker有一个庞大的社区,这意味着有大量的现成的解决方案可以解决许多常见问题,同时也有大量的工具和库可供使用。
要使用Docker,首先你需要安装Docker引擎。然后,你可以创建Dockerfile来定义你的应用及其依赖项如何被打包到容器中。接下来,你可以使用docker build
命令来构建你的Docker镜像,然后使用docker run
命令来运行你的应用。
不过,虽然Docker有很多优点,但也存在一些挑战,例如安全性和性能问题。例如,Docker使用了Linux内核的命名空间来隔离不同的容器,这可能会导致一些安全性的问题。此外,由于每个容器都有自己的文件系统和进程,这可能会导致一些性能开销。但总的来说,这些挑战并不妨碍Docker成为一个强大而广泛使用的工具。
1. 容器数据卷
1.1 什么是容器数据卷
docker的理念是把应用和环境打包成镜像,方便我们去运行容器。这样引出了一个问题,如果容器没有打包成新的镜像,容器删除了,则容器的数据就会丢失。所以需要同步容器内的数据到其他地方,对应的解决方案就是容器卷技术,通过容器卷技术可以保证容器内的数据同步至本地,让容器间共享数据。
1.2 容器数据卷的作用
容器卷可以保证容器数据的持久化和同步操作,容器间也可以进行数据共享。
容器卷特点:
-
数据卷可在容器之间共享或重用数据。
-
数据卷中的数据更改实时生效。
-
数据卷中的更改不会包含在镜像的更新中。
-
数据卷的生命周期一直持续到没有容器使用它为止。
1.3 容器数据卷常用命令
1
2# 宿主机和容器之间映射添加容器卷 -v 可以挂载多个
3docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
4# 上面的命令是默认的可读可写,容器内可以读可以写
5# 容器内可读可写
6# docker run -it -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
7# 容器内只读,宿主机写的内容会同步到容器内
8# docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
9
10# 查看数据卷是否挂载成功 Mounts下
11docker inspect 容器id
12
13# 具名挂载、匿名挂载、指定路径挂载
14-v 容器内目录 # 匿名挂载
15-v 卷名:容器内目录 # 具名挂载
16-v 宿主机绝对路径目录:容器内目录 # 指定路径挂载
17
18# 卷的继承和共享
19# 1,容器1完成和宿主机的映射
20docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
21# 2,容器2继承容器1的卷规则
22docker run -it --volumes -from 父类 --name=名称 镜像名
1.4 容器数据卷简单案例
mysql数据持久化
1# 下载mysql镜像
2docker pull mysql:5.7
3
4# 启动容器
5# -d mysql:tag
6# -d 后台运行
7# -p 端口映射
8# -v 卷挂载
9# -e 环境配置
10# --name 容器命名
11
12docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
13
14#navicat测试连接成功
navicat新建test库,查看同步情况
2. dockerFile
2.1 什么是dockerFile
dockerfile是用来构建docker镜像的构建文件(命令参数脚本),其中包含了许多条指令,每条指令构件一层镜像,最后汇总bulid用户自定义镜像。
2.2 dockerFile的作用
Dockerfile的作用即是自定义镜像,用户发布和运行最终的产品。
-
DockerFile:构建文件,定义了一切的步骤,源代码。
-
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品。
-
Docker容器:容器就是镜像运行起来提供服务器。
2.3 dockerFile常用指令
参考官方文档