1.大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
• 依赖关系复杂,容易出现兼容性问题
• 开发、测试、生产环境有差异
2.Docker如何解决依赖的兼容问题的?
• 将应用的 Libs (函数库)、 Deps (依赖)、配置与应用一起打包
• 将每个应用放到一个隔离 容器 去运行,避免互相干扰
3.Docker如何解决不同系统环境的问题?
l Docker 将用户程序与所需要调用的系统 ( 比如 Ubuntu) 函数库一起打包
l Docker 运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的 Linux 内核来运行
4.Docker是一个快速交付应用、运行应用的技术:
1. 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意 Linux 操作系统
2. 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
3. 启动、移除都可以通过一行命令完成,方便快捷
5.Docker和虚拟机的差异:
• docker 是一个系统进程;虚拟机是在操作系统中的操作系统
• docker 体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
6. 镜像和容器
镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
7.Docker和DockerHub
DockerHub : DockerHub 是一个 Docker 镜像的托管平台。这样的平台称为 Docker Registry 。
国内也有类似于 DockerHub 的公开服务 , 比如 网易云镜像服务 、 阿里云镜像库 等。
8.Docker是一个快速交付应用、运行应用的技术:
1. 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意 Linux 操作系统
2. 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
3. 启动、移除都可以通过一行命令完成,方便快捷
9.Docker和虚拟机的差异:
• docker 是一个系统进程;虚拟机是在操作系统中的操作系统
• docker 体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
镜像和容器
镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
Docker基本操作
镜像操作有哪些?
• docker images
• docker rmi
• docker pull
• docker push
• docker save
docker load
去DockerHub搜索并拉取一个Redis镜像
1. 去 DockerHub 搜索 Redis 镜像
2. 查看 Redis 镜像的名称和版本
3. 利用 docker pull 命令拉取镜像
4. 利用 docker save 命令将 redis:latest 打包为一个 redis.tar 包
5. 利用 docker rmi 删除本地的 redis:latest
6. 利用 docker load 重新加载 redis.tar 文件
容器相关命令:
docker exec 进入容器执行命令
docker logs 查看容器运行日志
docker ps 查看所有运行的容器及状态
docker run命令的常见参数有哪些?
• --name :指定容器名称
• -p :指定端口映射
• -d :让容器后台运行
查看容器日志的命令:
• docker logs
• 添加 -f 参数可以持续查看日志
查看容器状态:
• docker ps
命令解读:
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mn :要进入的容器的名称
bash :进入容器后执行的命令, bash 是一个 linux 终端交互命令
查看容器状态:
• docker ps
• 添加 -a 参数查看所有状态的容器
删除容器:
• docker rm
• 不能删除运行中的容器,除非添加 -f 参数
进入容器:
• 命令是 docker exec -it [ 容器名 ] [ 要执行的命令 ]
• exec 命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
Docker数据卷操作
Docker自定义镜像
DockerCompose
Docker镜像仓库