Docker
由镜像和容器组成
- 镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
- 容器(Container):镜像中的应用运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
Docker结构:
- 服务端:接收命令或远程请求,操作镜像或容器
- 客户端:发送命令或请求到Docker服务端
DockerHub:
- 一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry
Docker基本操作
- docker images 镜像操作
- docker rmi 删除镜像
- docker pull 拉取镜像
- docker push 提交镜像
- docker save 保存镜像tar文件
- docker load 读取tar文件加载镜像
Docker基本操作-容器
docker run命令常见参数
- --name:指定容器名称
- -p:指定端口映射
- -d:让容器后台运行
查看容器日志的命令
- docker logs
- 添加 -f 参数可以查看动态日志
查看容器状态
- docker ps
- -f参数可强制删除运行中的容器
删除容器:
- docker rm
进入具体容器命令
docker exec -it mn bash
#docker exec:进入容器内部,执行一个命令
#-it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
#mn:要进入的容器的名称
#bash:进入容器后执行的命令,bash是一个linux终端交互命令
Docker数据卷
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录
数据卷的作用
- 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作
- docker volume create 创建
- docker volume ls 查看所有
- docker volume inspect 查看详情
- docker volume rm 删除一个
- docker volume prune 删除未使用的
可以指定宿主机目录或文件挂在到容器对应的目录或文件
Dockerfile自定义镜像
Dockerfile
Dockerfile是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer
-
FROM:指定基础镜像
- FROM centos:7
-
ENV:设置环境变量,可在后面指令使用
- ENV key value
-
COPY:拷贝本地文件到镜像的指定目录
- COPY ./mysql... /tml
-
RUN:执行Linux的shell命令,一般是安装过程的命令
- RUN yum install gcc
-
EXPOSE:指定容器运行时监听的端口(注意不是映射端口)
- EXPOSE 8080
-
ENTRYPOINT:镜像中应用的启动命令,容器运行时调用
- ENTRYPOINT java -jar xx.jar
有一个java:8-alpine镜像可以为我们创建java8环境的基础镜像
DockerCompose作用
快速部署分布式应用,无需逐个构建镜像和部署
Docker镜像仓库
简化版镜像仓库
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
带有图形化界面的版本
使用DockerCompose部署带有图像界面的DockerRegistry