1.初识docker
Docker是一个开源的容器化平台,用于构建、发布和运行应用程序。它利用了操作系统级别的虚拟化技术,可以将应用程序及其依赖项打包进一个称为"容器"的独立单元中,并在不同的环境中进行部署和运行。
应用部署的环境问题
大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
- 依赖关系复杂,容易出现兼容性问题
- 开发、测试、生产环境有差异
一、Docker解决依赖兼容问题
- 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
- 将每个应用放到一个隔离容器去运行,避免互相干扰
二、Docker解决操作系统环境差异
- Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
- Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
2. Docker架构
镜像:
- 将应用程序及其依赖、环境、配置打包在一起
容器:
- 镜像运行起来就是容器,一个镜像可以运行多个容器
Docker结构:
- 服务端:接收命令或远程请求,操作镜像或容器
- 客户端:发送命令或者请求到Docker服务端
DockerHub:
- 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry
3. Docker的基本操作
3.1 镜像操作
docker pull [repository]:[tag] : 拉取镜像
docker images : 查看拉取到的镜像
docker save -o [保存的目标文件名称] [repository] :导出镜像到磁盘
docker load -i [保存的目标文件名称] : 加载镜像
docker rmi [repository]:[tag] : 删除对应镜像
3.2 容器操作
docker run --name containerName -p 80:80 -d [repository]
命令解读:
- docker run :创建并运行一个容器
- –name : 给容器起一个名字,比如叫做mn
- -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
- -d:后台运行容器
- [repository]:镜像名称
docker pause:让一个运行的容器暂停
docker unpause:让一个容器从暂停状态恢复运行
docker stop:停止一个运行的容器
docker start:让一个停止的容器再次运行
docker rm :删除一个容器
docker ps 查看启动中的容器
docker ps -a 查看所有存在的容器
3.3 数据卷(容器数据管理)
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。
docker volume create html:创建数据卷
docker volume ls : 查看所有数据
docker volume inspect html : 查看数据卷详细信息卷
docker volume rm:删除指定数据卷
docker volume prune:删除所有未使用的数据卷
3.3.1 挂载数据卷
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下
docker run --name mn -v html:/root/html -p 8080:80 nginx
这里的-v就是挂载数据卷的命令:
-v html:/root/htm
:把html数据卷挂载到容器内的/root/html这个目录中