目录
[3.2、安装 Docker Engine-Community](#3.2、安装 Docker Engine-Community)
1、防火墙
1.1、查看防火墙状态
bash
sudo ufw status
注:如果没有安装防火墙可以使用命令安装
bash
sudo sudo apt-get install ufw
1.2、开启防火墙
bash
sudo ufw enable
注:启动防火墙时,服务器会提示:Command may disrupt existing ssh connections.Proceed with operation (y|n)?
意思就是,命令有可能会中断本次ssh的连接,是否继续。
选择:y,会提示防火墙已打开。
1.3、关闭防火墙
bash
sudo ufw disable
1.4、重启防火墙
重启防火墙,添加规则以后需要使用该命令进行重启防火墙,比如设置对外开放的端口号等。
bash
sudo ufw reload
1.5、查看防火墙版本
bash
sudo ufw version
2、安装JDK
2.1、官网下载tar包
官网地址:Java Downloads | Oracle 中国
2.3、解压tar.gz文件
bash
sudo tar -zxvf jdk-8u381-linux-x64.tar.gz
2.4、配置环境变量
2.4.1、查看安装路径
2.4.2、设置环境变量
bash
export JAVA_HOME=/usr/local/JDK/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
2.4.3、执行该让环境变量生效
bash
source /etc/profile
2.4.4、查看JDK版本
bash
java -version
3、Docker
Ubuntu系统安装Docker_ubuntu安装docker_流觞浮云的博客-CSDN博客
3.1、安装Docker
3.1.1、卸载旧版本
bash
sudo apt-get remove docker docker-engine docker.io containerd runc
3.1.2、获取软件最新源
bash
sudo apt-get update
3.1.3、安装apt依赖包
用于HTTPS来获取仓库
bash
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
3.1.4、安装GPG证书
bash
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
3.1.5、验证
bash
sudo apt-key fingerprint 0EBFCD88
3.1.6、设置稳定版仓库
bash
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
3.2、安装 Docker Engine-Community
3.2.1、更新apt包索引
bash
sudo apt-get update
3.2.2、安装最新版本
bash
sudo apt-get install docker-ce docker-ce-cli containerd.io
3.2.3、安装特定版本
查看可获取的版本
bash
apt-cache madison docker-ce
安装指定版本
3.3、启动和停止
3.3.1、启动docker
bash
sudo service docker start
3.3.2、停止docker
bash
sudo service docker stop
3.3.3、重启docker
bash
sudo service docker restart
3.4、Docker镜像操作
3.4.1、列出镜像
bash
docker images
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGEID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
3.4.2、搜索镜像
bash
docker search mysql
3.4.4、拉去镜像
要想获取某个镜像,我们可以使用pull命令,从仓库中拉取镜像到本地,如
bash
docker pull hackeryx/ubuntu:16.04
3.4.5、删除镜像
docker image rm 镜像名或镜像 id 或 docker rmi 镜像名或镜像 id
3.5、Docker操作容器
3.5.1、创建容器
bash
docker run [option] 镜像名:tag [向启动容器中传入的命令]
常用可选参数说明:
-i 表示以"交互模式"运行容器
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-e 为容器设置环境变量
--network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
3.5.2、交互式容器
例如,创建一个交互式容器,并命名为myubuntu
bash
docker run -it --name=ubuntu kochul2000/ubuntu20.04-apt-pip:latest /bin/bash
在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。
3.5.3、守护式容器
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。
bash
docker run -itd --name=ubuntu2 --network=host kochul2000/ubuntu20.04-apt-pip:latest
3.5.4、进入已运行的容器
docker exec -it 容器名或容器id 进入后执行的第一个命令
bash
docker exec -it ubuntu /bin/bash
3.5.5、查看容器
列出本机所有容器,包括已经终止运行的
bash
docker ps -a
3.5.6、停止与启动容器
停止一个已经在运行的容器
bash
docker container stop 容器名或容器id
3.5.7、启动一个已经停止的容器
bash
docker container start 容器名或容器id
3.5.8、kill掉一个已经在运行的容器
bash
docker container kill 容器名或容器id
3.5.9、删除容器
bash
docker container rm 容器名或容器id 或 docker rm 容器名或容器id
3.6、Docker安装MySQL容器
3.6.1、下载MySQL镜像
|-----------------------|------------------------------------------------------|
| 命令 | 描述 |
| docker pull mysql | 下载最新版Mysql镜像 (其实此命令就等同于 : docker pull mysql:latest ) |
| docker pull mysql:xxx | 下载指定版本的Mysql镜像 (xxx指具体版本号) |
3.6.2、创建MySQL容器并运行
bash
sudo docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:5.7
|--------------------------------------|------------------------------------------|
| 命令 | 描述 |
| docker run | 创建一个新的容器 , 同时运行这个容器 |
| --name mysql | 启动容器的名字 |
| -d | 后台运行 |
| -p 3306:3306 | 将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口 |
| --restart unless-stopped | 容器重启策略 |
| -v /mydata/mysql/log:/var/log/mysql | 将日志文件夹挂载到主机 |
| -v /mydata/mysql/data:/var/lib/mysql | 将mysql储存文件夹挂载到主机 |
| -v /mydata/mysql/conf:/etc/mysql | 将配置文件夹挂载到主机 |
| -e MYSQL_ROOT_PASSWORD=root | 设置 root 用户的密码 |
| mysql:5.7 | 启动哪个版本的 mysql (本地镜像的版本) |
| \ | shell 命令换行符 |
注:命令中所有 冒号 前面的是主机配置 , 冒号 后面的是mysql容器配置 。
--restart unless-stopped : 在docker重启时重启当前容器。但不包含docker重启时已停止的容器。
3.6.3、查看MySQL是否运行
bash
docker ps
3.6.4、通过Docker命令进入MySQL容器内部
bash
docker exec -it mysqlserver /bin/bash
或
docker exec -it mysqlserver bash
3.6.5、链接mysql
bash
mysql -uroot -p123456
3.6.6、切换用户表
bash
use mysql;
3.6.7、修改密码
bash
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
3.6.8、开启远程访问
bash
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
3.6.9、刷新
bash
flush privileges;
3.7、Docker安装Redis
3.7.1、下载Redis镜像
|-----------------------|------------------------------------------------------|
| 命令 | 描述 |
| docker pull redis | 下载最新版Redis镜像 (其实此命令就等同于 : docker pull redis:latest ) |
| docker pull redis:xxx | 下载指定版本的Redis镜像 (xxx指具体版本号) |
3.7.2、创建Redis配置文件
启动前需要先创建Redis外部挂载的配置文件 ( /usr/local/redis/conf/redis.conf )
之所以要先创建 , 是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件
当服务器和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的结果 。
3.7.3、创建Redis容器并运行
bash
sudo docker run -p 6379:6379 --name redis -v /usr/local/redis/data:/data -v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
3.7.4、查看Redis是否运行
bash
sudo docker ps
3.7.5、通过Docker命令进入Redis容器内部
bash
docker exec -it redis /bin/bash
## 或者
docker exec -it redis bash
3.8、Docker安装Tomcat
3.8.1、下载Tomcat镜像
|------------------------|---------------------------------------------------|
| 命令 | 描述 |
| docker pull tomcat | 下载最新版Tomcat镜像(其实此命令等同于:docker pull tomcat:latest) |
| docker pull tomcat:xxx | 下载指定版本的Tomcat镜像(xxx指具体版本号) |
3.8.2、创建tomcat配置文件目录
创建(conf、webapps、logs)并赋予权限,目的是做数据挂载
3.8.3、创建Tomcat容器并运行
bash
sudo docker run -d -p 8080:8080 --name tomcat -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps -v /usr/local/tomcat/conf:/usr/local/tomcat/conf -v /usr/local/tomcat/logs:/usr/local/tomcat/logs tomcat
3.8.4、查看Tomcat是否运行
3.8.5、通过Docker命令进入Tomcat容器内部
3.8.6、查看主机本机数据是否被挂载
3.8.7、修改tomcat的server.xml配置文件
设置Tomcat 上传图片的访问路径,使上传的图片可以直接用URL直接访问
在Tomcat的conf目录下的server.xml配置访问路径。
doBase:图片上传的路径
path:ip:8080/img/xxx.png访问图片的重定向方式
3.9、Docker安装Nginx
3.9.1、下载Nginx镜像
|-----------------------|----------------------------------------------|
| 命令 | 描述 |
| docker pull nginx | 下载最新版Nginx镜像(命令等同于:docker pull redis:latest) |
| docker pull redis:xxx | 下载指定版本的Nginx镜像(xxx指具体版本号) |
3.9.2、创建目录并且赋予权限
在主机中创建Nginx文件目录并赋予权限sudo chmod 777 文件目录或文件/
3.9.3、创建Redis容器并运行(不做挂载)
以不做数据挂载的方式创建nginx容器并运行,目的是将docker中nginx的配置文件拷贝到主机
bash
sudo docker run -d --name nginx -p 80:80 nginx:1.23
3.9.4、拷贝nginx配置文件到主机
bash
sudo docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/
sudo docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/
sudo docker cp nginx:/usr/share/nginx/html /usr/local/nginx/html
sudo docker cp nginx:/var/log/nginx/ /usr/local/nginx/logs/
3.9.5、删除没有做数据挂载的nginx容器
bash
sudo docker rm -f 容器ID
3.9.6、创建nginx容器、运行并做数据挂载
bash
sudo docker run \
-d \
--name nginx \
-p 80:80 \
-v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/conf:/etc/nginx/conf.d \
--privileged=true \
-e TZ=Asia/Shanghai \
nginx:1.23
3.9.7、通过Docker命令进入Nginx容器内部
3.9.8、查看主机数据是否被挂载
3.9.9、Nginx配置文件基本配置
3.10、前后端分离项目部署(Ruoyi框架)
3.10.1、后端SpringBoot打包成jar包
3.10.2、前端vue项目打成dist文件
3.10.3、项目上传
将前端和后端项目上传到服务器并将目录赋予权限
3.10.4、运行项目
启动后端项目后台运行并将日志保存在chatgpt.log文件中
bash
nohup java -jar ruoyi-admin.jar > chatgpt.log 2>&1 &
3.10.5、配置前端Nginx
前端项目通过nginx配置文件设置路由转发和方向代理,当然可以将dist文件放入到docker中的nginx文件目录下的html文件中,并重启nginx,可以参考3.9.9的配置文件。