一、centOS8卸载docker以及删除相关数据(第一次安装直接跳过)
1、停止所有容器
sudo docker stop $(docker ps -aq)
2、删除所有容器
sudo docker rm $(docker ps -aq)
3、删除所有镜像
sudo docker rmi $(docker iamges -q)
4、卸载docker引擎
sudo yum remove docker-ce docker-ce-cli containerd.io
5、删除docker数据目录
sudo rm -rf /var/lib/docker
二、安装docker
1、利用远程连接工具连接 linux 服务器,当然也可以直接在linux系统上操作。远程工具的话,XTerminal 工具还是比较好用的,远程连接工具可自行下载。
2、安装dnf,dnf是新一代的rpm软件包管理器,也可以使用yum,看自己喜欢用那个
yum -y install dnf
3、安装docker存储驱动的依赖包
dnf install -y device-mapper-persistent-data lvm2
4、添加稳定的docker软件源
dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、安装docker
dnf install -y docker-ce --nobest # --nobest 意思是安装最符合条件的版本
6、启动 docker 并查看docker版本
systemctl start docker
docker --version
7、设置docker开机自启动
systemctl enable docker
8、查看已有的docker镜像
docker images
首次安装的话,查看docker镜像是这样的
9、安装镜像,利用pull可以拉取镜像
docker pull 镜像:版本
#如:
docker pull nginx:latest
docker pull node:latest
利用 docker images命令查看已有镜像
至此,docker安装就完成了!
10、docker 命令:
- 启动docker服务:systemctl start docker
- 停止docker服务:systemctl stop docker
- 重启docker服务:systemctl restart docker
- 查看docker服务状态:systemctl status docker
- 开机启动docker服务:systemctl enable docker
- 查看本地所有镜像:docker images
- 查看所用镜像的ID:docker images -q
- 搜索镜像:docker search 镜像名称
- 拉取镜像:docker pull 镜像名称 #从docker仓库下载镜像的本地,镜像名称格式为:名称:版本号,不指定版本号则是最新的版本,
- 删除指定本地镜像:docker rmi 镜像ID
- 删除所有本地镜像:docker rmi 'docker images -q'
- 查看正在运行的容器:docker ps
- 查看所有容器;docker ps -a
- 从指定镜像创建并启动容器:docker run 参数 镜像名
参数:
-i:保持容器运行,通常与 -t同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i同时使用
-d:以守护(后台)模式运行容器
-it:创建的容器一般为交互式容器
-id:创建的容器一般为守护式容器
--name:为创建的容器命名
如:docker run -id --name test nginx #从nginx镜像创建一个名为test的守护容器并运行。
- 进入容器(新终端):dockers exec -it 容器ID/容器名
- 进入容器:docker attach 容器ID/容器名
- 启动容器:docker start 容器ID/容器名
- 停止容器:docker stop 容器ID/容器名
- 重启容器:docker restart 容器ID/容器名
- 获取容器的运行日志:docker logs 容器ID/容器名
- 查看容器信息:docker inspect 容器名称
- 删除容器:docker rm 容器ID/容器名 #正在运行的容器必须先停止运行才能删除
三、Docker应用部署
1、docker安装JDK
搜索镜像
docker search openjdk:8
拉取镜像
docker pull openjdk:8
创建一个运行的容器
docker run -id --name=jdk1.8 openjdk:8
进入容器
docker exec -it jdk1.8 /bin/bash
JDK安装成功
2、docker安装mysql数据库
搜索镜像
docker search mysql
拉取镜像
docker pull mysql:8.0.22
创建容器、设置端口映射、目录映射
docker run -id \
-p 3307:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.22
#参数说明:
-p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs日志目录
-v $PWD/data:/var/lib/mysql:将主机当前目录下的data目录挂载到容器的 /var/lib/mysql数据目录
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码。
进入容器
docker exec -it mysql /bin/bash
或
docker exec -it mysql bash
初始化数据
将sql文件放到一个目录下
然后将sql文件拷贝到mysql容器中
docker cp /root/app/yinpe-person.sql mysql:/yinpe-person.sql
进入数据库
mysql -uroot -proot
执行 source 命令初始化数据
source sql文件
使用navication工具进行连接测试
3、docker安装redis
搜索镜像
docker search redis
拉取镜像
docker pull redis:latest
查看镜像
docker images
创建挂载目录
mkdir /data/redis/conf
mkdir /data/redis/data
从官网下载redis,将redis.conf配置文件拷贝到conf目录中
修改redis.conf配置文件
#如果要外网访问,请注释掉下面,或者修改为0.0.0.0,保险起见,也可以把protected-mode设置为no
bind 0.0.0.0
protected-mode no
#注意这里要把后台运行设置为no,避免docker后台运行冲突
daemonize no
#注意修改这里的目录为容器内目录,默认reids进来是在/data/目录
dir /data/
#注意修改这里的配置,yes开启持久化,no关闭持久化
appendonly yes
创建并运行容器
docker run -id -p 6379:6379 --name redis -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data redis:latest
进入容器
docker exec -it redis /bin/bash
或
docker exec -it redis bash
进入redis.conf目录执行命令:redis-server redis.conf 启动redis
测试外部连接redis
redis安装成功
4、docker安装nginx
#搜索镜像
docker search nginx
#拉取镜像
docker pull nginx:latest
#查看镜像
docker images
在linux系统中创建挂载源文件和文件夹
mkdir -p /data/nginx/conf
mkdir -p /data/nginx/html
mkdir -p /data/nginx/logs
创建并运行容器
docker run -id -p 80:80 --name nginx nginx:latest
查看nginx是否部署成功
curl localhost:80 # :80可省略
进入容器并查看nginx相关配置文件存放位置
#进入容器
docker exec -it nginx /bin/bash
#查看相关配置文件存放位置
whereis nginx
退出容器,将nginx相应的配置文件复制到上面创建的挂载源文件中
#退出容器
exit
#复制相应的配置文件
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /data/nginx/
停止并移除nginx容器
#停止容器
docker stop 容器ID
#移除容器
docker rm 容器ID
重新创建并运行容器,并做目录挂载
docker run -d \
-p 80:80 \
-p 443:443 \
--name nginx \
--restart=always \
-e TZ="Asia/Shanghai" \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/cert:/etc/nginx/cert \
nginx:latest
检查是否部署成功
nginx安装完成
5、springboot后端项目部署
将springboot后端项目打包后上传到linux服务器,后端项目打包需要注意服务端口、mysql连接地址、redis连接地址以及其他相关地址。创建Dockerfile文件并编写以下内容:
Dockerfile:
#基础镜像
FROM openjdk
#目录并持久化到docker数据文件夹,springboot内嵌的tomcat容器默认使用/tmp
volume /tmp
#添加自己的项目到app.jar中
add ruoyi-admin.jar /app.jar
#暴露后端端口号
EXPOSE 8080
#运行jar包
run bash -c 'touch /app.jar'
entrypoint ["java","-jar","/app.jar"]
Dockerfile文件和java jar包必须放在统一目录下
构建镜像
#springboot-app是构建的镜像名称,可随意取,最后的(.)不可少
docker build -t springboot-app .
创建并运行容器
docker run -d -p 8080:8080 --name springbootapp springboot-app
查看日志
docker logs -f -t --tail 1000 springbootapp #1000是行数 springbootapp是容器名称
springboot后端项目启动成功
6、vue前端项目部署
在前端项目打包时需要注意将vue.config.js中的地址改成后端项目部署好的地址
vue打包后将其上传到服务器,
dist包放在上面配置挂载的html目录下,
修改 /conf.d中的default.conf的
重启nginx容器,前端项目部署成功。
到浏览器访问部署好的项目
至此,大功告成!