为什么要用Docker
环境配置的难题
- 用户计算机的环境都不相同
- 老旧的模块与当前环境不兼容
- 相当于换一台机器,就要重新再配置一遍环境
Linux容器
- Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离,或者说在进程
- 容器里面的进程接触到的各种资源都是虚拟的,从而实现与底层系统的隔离
- Docker属于Linux容器的一种封装,提供简单易用的容器使用接口 目前最流行的Linux容器解决方法
Docker基本组成
客户端 + 主机 + 远程仓库
三个概念
镜像Image
- 一个包含有文件系统的面向Docker引擎的只读模板,任何程序都需要环境,而镜像就是用来提供这种运行环境的
- 例如一个Ubantu镜像就是一个包含Ubantu操作系统环境的模板
容器Container - 镜像创建的实例
- 极简的Linux系统环境
- 各个容器间相互隔离、互不影响
仓库Repository - Docker用来集中存放镜像文件的地方
- 每个仓库有多个镜像,用tag标示,如果不加tag,默认使用latest镜像
镜像Image操作
镜像仓库docker pull
从镜像仓库拉去镜像至本地docker images
查看当前系统中的images信息docker ps -a
查看docker中运行的程序(容器)docker rmi
删除本地镜像
自己创建镜像
- 创建
dockerfile
文件 - 执行
docker build
命令创建本地镜像 docker push
将本地镜像推送到远端
DockerFile
- FROM 指定基础镜像 FROM centos:6
- ENV 设置环境变量 可以在后续指令中使用 ENV key value
- COPY 拷贝本地文件到镜像指定目录 COPY ./jrell.tar.gz /tmp
- RUN 执行Linux的shell命令,一般是安装过程的命令
- EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
- ENTRYPOINT 镜像中应用的启动命令 ENTRYPOINT java -jar xx.jar
容器
容器相关命令
docker inspect 容器名
查看容器名
数据卷
- 数据卷是一个虚拟目录,将宿主目录映射到容器内部,方便我们操作容器内文件
挂载数据卷 - 创建容器时,利用-v数据卷名:容器内目录完成挂载
- 创建容器时,如果发现挂载在数据卷不存在时,会自动创建
命令
docker volume create 创建数据卷
docker volume ls 查看所有数据卷
docker volume rm 删除指定数据卷
docker volume inspect 查看某个数据卷详情
docker volume prune 清楚数据卷