0 安装Docker
先卸载Linux系统中的Docker
yum remove docker
安装所需工具和源
yum install -y yum-utils
yum-config-manager --add-repo (源地址)
安装Docker
启动和验证是否安装成功
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
#设置开机自启
systemctl enable docker
# 检验是否启动成功
docker ps
#检验安装启动成功
docker -v
docker images
配置阿里云镜像加速器
选择管理控制台->镜像加速器->按照相对应的镜像操作文档去执行命令->重启Docker
1 初识Docker
1.1 项目部署的问题
大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
- 依赖关系复杂、容易出现兼容性问题
- 开发、测试、生产环境有差异
Docker如何解决依赖的兼容问题?
- 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
- 将每个应用放到一个隔离容器去运行,避免互相干扰
1.1.1 不同环境的操作系统不同,Docker如何解决?
操作系统结构:内核与硬件交互,提供操作硬件的指令;系统应用封装内核指令为函数,便于程序员调用;用户程序基于系统函数库实现功能;
- Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
- Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行
1.1.2 Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
- Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
- Docker应用运行在容器中,使用沙箱机制,相互隔离
1.2 Docker与虚拟机
虚拟机是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在Windows系统中运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了。
1.3 镜像和容器
当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像
- 镜像:Docker将应用程序及所需的依赖、函数库、环境、配置等文件打包在一起
- 容器:docker会在运行镜像时创建一个隔离环境
- 镜像仓库: 存储和管理镜像的平台,Docker官方维护了一个公共仓库Docker_hub
1.4 Docker架构
1.5 快速入门-部署MySQL
先停掉虚拟机中的MySQL,确保你的虚拟机已将安装Docker,且网络开通的情况下,执行以下命令
客户端连接:ip地址为虚拟机的Ip,端口为命令中的3306
2 Docker基本操作
2.1 镜像相关命令
镜像名称一般分为两部分组成:[repository]:[tag](镜像名:版本,默认最新)
2.1.1 从DockerHub中拉取一个nginx镜像并查看
2.1.2 利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
2.2 容器相关命令
2.2.1 docker run:创建并运行一个容器
-e:设置环境变量。例如设置MySQL的root账户的密码
- docker pull nginx
- docker run (相关设置)nginx
- 然后根据图片内容操作
2.3 设置命令别名
将以上命令封装方便后续执行
只查看所需的信息
2.4数据卷
数据卷是一个虚拟目录,是容器目录与宿主机目录之间映射的桥梁
本地目录挂载
提前创建以下目录
网络
3 Dockerfile自定义镜像
镜像结构
- 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成
- 分层:实现共享
Dockerfile
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
写好Dockerfile后使用docker build命令构建镜像
4 DockerCompose
部署mysql
5 Docker镜像仓库
详细笔记:(blog.csdn.net/yangsf_/art…)
6 Java应用部署
maven运行package打包成jar包生成在taget,将jar包上传到linux中
写好Dockerfile后使用docker build命令构建镜像
创建运行容器docker run
7 部署前端
将html文件目录和conf文件挂载