docker能干嘛
docker 的应用场景
- Web应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 从头编译或者扩展。。。。。
docker 优点
docker 是一个用于开发、交付和运行应用程序的开放平台。他能使应用程序和基础架构分开,从而可以快速交付软件。
- 快速一致的交付应用程序
- 响应式部署和扩展
- 在同一硬件上运行更多工作负载
docker 和 虚拟机技术的不同
docker更快速交付和部署的原理
对于镜像的理解
百度
镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件,RAID 1和RAID 10使用的就是镜像。常见的镜像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。
docker中的镜像
将项目打包为一个镜像
docker的镜像就好像是一个模板,可以通过这个模板创建容器服务
Docker镜像就是一个Linux的文件系统(Root FileSystem),这个文件系统里面包含可以运行在Linux内核的程序以及相应的数据。
镜像文件. 所谓镜像文件其实和rar ZIP压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用,例如一个操作系统、游戏等。. 它最重要的特点是可以被特定的软件识别并可直接刻录到 光盘 上。. 其实通常意义上的镜像文件可以再扩展一下,在镜像文件中可以包含更多的信息。. 比如说系统文件、 引导文件 、 分区表 信息等,这样镜像文件就可以包含一个分区甚至是一块硬盘的所有信息。. 而通常意义上的刻录软件都可以直接将支持的镜像文件所包含的内容刻录到光盘上。. 其实,镜像文件就是光盘的"提取物"。
在docker中怎么理解镜像?
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,他包含运行某个软件所需要的所有内容,包括代码,(一个程序在运行或者被执行的依赖)库,环境变量和配置文件。
对于集群的理解
docker的安装
环境准备
环境查看
安装(帮助文档)
docker的基本组成
镜像+容器+仓库
仓库是存放镜像的地方
对于容器的理解
可以把这个容器理解为是一个简易的Linux系统
阿里云镜像加速
底层原理
docker是怎么工作的?
docker 为什么比 Vm快
- dockers有着比虚拟机更少的抽象层
docker 的常用命令
帮助命令
docker version
docker info
docker 命令 --help
镜像命令
docker image
docker search
docker pull
docker rmi
容器命令
有了镜像才能创建容器,Linux,下载一个centOs镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名字 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
列出所有运行的容器
# docker ps 命令
# 列出当前正在运行的容器
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q # 只显示容器的编号
退出容器
exit 直接退出
Ctrl + P + Q 容器不停止退出
删除容器
docker rm 容器id # 删除指定的容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm 删除所有的容器
启动和停止容器
docker start 容器id
docker restart 容器id
docker stop 容器id
docker kill 容器id
常用其他命令
后台启动容器
# 命令 docker run -d 镜像名
# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker 发现没有应用,就会自动停止
# nginx 容器启动后,发现自己没有提供服务就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail 容器,没有日志
# 自己编写一段脚本
"while true;do echo kuangshen;sleep 1;done"
# 显示具体行数的日志
-tf # 显示日志
--tail number # 显示日志条数
docker logs -tf --tail 10 容器,没有日志
查看容器中的进程信息
# 命令 docker top 容器id
# docker top dec13bh12kj
查看容器的元数据
# docker inspect + 容器id
进入容器
# 通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
docker exec -it 容器id bashShell
访问docker中的容器
容器数据卷
什么是容器数据卷?
为了实现数据持久化,使容器之间可以共享数据。可以将容器内的目录,挂载到宿主机上或其他容器内,实现同步和共享的操作。即使将容器删除,挂载到本地的数据卷也不会丢失。
直接使用命令
docker run -it -v 主机内目录:容器内目录 镜像名/id
建立挂载关系后,只要使用命令在主机内新建一个文件:
touch /home/mountdir/test.txt
1
就会在容器内的挂载目录下发现相同的文件(test.txt),从而实现了容器和主机的文件同步和共享
匿名挂载
docker run -d -v 容器内目录 镜像名/id # 匿名挂载
匿名挂载后,使用docker volume ls命令查看所有挂载的卷
具名挂载
docker run -d -v 卷名:容器内目录 镜像名/id # 具名挂载
可以发现挂载的卷:volume01,并通过docker volume inspect 卷名 命令找到主机内目录
所有docker容器内的卷,在未指定主机内目录时,都在:/var/lib/docker/volumes/卷名/_data 下,可通过具名挂载可以方便的找到卷,因此广泛使用这种方式进行挂载。
DockerFile
dockerfile 是用来构建docekr镜像的文件,命令参数脚本
构建步骤:
- 编写一个dockerfile文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(Docker hub ,阿里云)
DockerFile 构建过程
基础:
- 每个保留关键字都必须是大写字母
- 执行都是从上倒下的顺序
- #表示注释
- 每个指令都会创建提交一个新的镜像层
docekrfile 是面向开发的,以后发布项目,做镜像,就需要编写dockerfile 文件。
步骤:
Docker 镜像逐渐成为企业交付的标准
DockerFile :构建文件,定义了一切的步骤,源代码
Docker容器: 容器就是镜像运行起来提供服务器
DockerFile 的指令
编写一个dockerfile文件,随后运行命令:
docker build -f 文件路径 -t 镜像名 . # 文件名为Dockerfile时可省略且最后的.不要忽略
docker run # 运行镜像
docker push # 发布镜像