Docker

59 阅读5分钟

0 安装Docker

先卸载Linux系统中的Docker

yum remove docker

安装所需工具和源

yum install -y yum-utils
​
yum-config-manager --add-repo (源地址)

安装Docker

image-20240613154846992

启动和验证是否安装成功

# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
#设置开机自启
systemctl enable docker
# 检验是否启动成功
docker ps
#检验安装启动成功
docker -v
docker images

配置阿里云镜像加速器

选择管理控制台->镜像加速器->按照相对应的镜像操作文档去执行命令->重启Docker

image-20240613155604391

image-20240613155630700

image-20240613155703345

1 初识Docker

1.1 项目部署的问题

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:

  • 依赖关系复杂、容易出现兼容性问题
  • 开发、测试、生产环境有差异

image.png

Docker如何解决依赖的兼容问题?

  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
  • 将每个应用放到一个隔离容器去运行,避免互相干扰

image.png

1.1.1 不同环境的操作系统不同,Docker如何解决?

操作系统结构:内核与硬件交互,提供操作硬件的指令;系统应用封装内核指令为函数,便于程序员调用;用户程序基于系统函数库实现功能;

image.png

  • Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
  • Docker运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行

1.1.2 Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

  • Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
  • Docker应用运行在容器中,使用沙箱机制,相互隔离

image.png

image.png

1.2 Docker与虚拟机

虚拟机是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在Windows系统中运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了。

image.png

image.png

1.3 镜像和容器

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像

  • 镜像:Docker将应用程序及所需的依赖、函数库、环境、配置等文件打包在一起
  • 容器:docker会在运行镜像时创建一个隔离环境
  • 镜像仓库: 存储和管理镜像的平台,Docker官方维护了一个公共仓库Docker_hub

image.png

image.png

1.4 Docker架构

image.png

image.png

1.5 快速入门-部署MySQL

先停掉虚拟机中的MySQL,确保你的虚拟机已将安装Docker,且网络开通的情况下,执行以下命令

image-20240613160241127

客户端连接:ip地址为虚拟机的Ip,端口为命令中的3306

2 Docker基本操作

2.1 镜像相关命令

镜像名称一般分为两部分组成:[repository]:[tag](镜像名:版本,默认最新)

image.png

image.png

2.1.1 从DockerHub中拉取一个nginx镜像并查看

image.png

2.1.2 利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

image.png

2.2 容器相关命令

image.png

2.2.1 docker run:创建并运行一个容器

image.png -e:设置环境变量。例如设置MySQL的root账户的密码

image.png

  1. docker pull nginx
  2. docker run (相关设置)nginx
  3. 然后根据图片内容操作

2.3 设置命令别名

image-20240613162928440

将以上命令封装方便后续执行

image-20240613163109753

image-20240613163131778

只查看所需的信息

2.4数据卷

数据卷是一个虚拟目录,是容器目录与宿主机目录之间映射的桥梁 image.png

image.png

image.png

image.png

image.png

本地目录挂载

image.png

image.png

提前创建以下目录

image-20240613164542571

image.png

网络

image-20240613172712015

image-20240613172840309

3 Dockerfile自定义镜像

镜像结构

  • 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成
  • 分层:实现共享

image.png

Dockerfile

image.png

# 指定基础镜像
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命令构建镜像

image-20240613171351730

4 DockerCompose

image.png

部署mysql

image-20240613203217619

5 Docker镜像仓库

image.png

image.png

详细笔记:(blog.csdn.net/yangsf_/art…)

6 Java应用部署

maven运行package打包成jar包生成在taget,将jar包上传到linux中

image-20240613173504537

写好Dockerfile后使用docker build命令构建镜像

image-20240613171351730

创建运行容器docker run

7 部署前端

将html文件目录和conf文件挂载

image-20240613202806450