通过 yum 的方式安装docker环境,默认存储位置是系统盘下面的 /var/lib/docker,默认 pid 存放位置是 /var/run/docker.pid。一般我们系统盘空间都不是很大,所以有时候需要调整存储位置。
针对centos8的具体操作方法如下:
1、停止docker服务:
systemctl stop docker
2、在挂载的非系统盘创建存放docker信息的目录(本文路径/app/middleware/docker):
cd /app
mkdir middleware
cd middleware
mkdir docker
3、移动/var/lib/docker下的文件到/app/middleware/docker
mv /var/lib/docker /app/middleware/docker
4、修改配置文件
vim /usr/lib/systemd/system/docker.service
找到 execstart=/usr/bin/dockerd 部分所在的行,在尾部增加:
--data-root=/app/middleware/docker --pidflie=/app/middleware/docker/docker.pid
5、保存配置文件,重新启动docker服务:
systemctl daemon-reload # 重新载入系统服务
systemctl docker start # 启动docker
6、查看docer信息:
注:另外还有一种创建软连接的方式
ln -s /app/middleware/docker/ /var/lib/docker
意思就是类似创建一个代理,当访问/var/lib/docker时,会自动连接到/app/middleware/docker(我没试,大家可以试一试)。
附:
1、docker安装
# 卸载旧docker
$ yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装一些必要的系统工具
$ yum install -y yum-utils
# 添加软件源信息
$ yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
(阿里云镜像源地址:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo)
# 安装containerd
$ yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
# 安装docker引擎
$ yum install -y docker-ce docker-ce-cli
# 启动docker服务
$ systemctl start docker
2、用docker安装mysql
# 创建数据库服务
docker pull mysql:5.7
docker run -id --name=mysql5.7 \
-p 3306:3306 \
-v /data/docker/mysql5.7/conf:/etc/mysql/conf.d \
-v /data/docker/mysql5.7/logs:/var/log/mysql \
-v /data/docker/mysql5.7/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=xxxx mysql:5.7
3、docker安装redis(单机)
1、默认配置安装
docker pull redis
docker run -d -p 6379:6379 redis
设置密码(非永久生效方式)
#进入容器
docker exec -it 容器id /bin/bash
#运行命令:
redis-cli
#查看现有的redis密码:
config get requirepass
#设置redis密码
config set requirepass 密码
2、自定义配置安装
#拉取镜像
docker pull redis
#创建配置文件及数据持久化目录
mkdir /usr/local/app/redis/config
mkdir /usr/local/app/redis/data
#启动redis
docker run -d -p 6379:6379 -v /usr/local/app/redis/config/redis.conf:/etc/redis/redis.conf -v /usr/local/app/redis/data:/data redis redis-server /etc/redis/redis.conf
3、redis.conf配置
##节点端口
port 6379
##允许任何来源
bind 0.0.0.0
## 是为了禁止公网访问redis cache,加强redis安全的。它启用的条件,有两个:1) 没有bind IP 2) 没有设置访问密码 启用后只能够通过lookback ip(127.0.0.1)访问Redis cache,如果从外网访问,则会返回相应的错误信息
protected-mode no
##开启持久化模式
appendonly yes
appendfilename appendonly.aof
#开启混合持久化
aof-use-rdb-preamble yes
# 文件达到1m时进行重写,然后如果文件大小增长了一倍,也会触发重写。
auto-aof-rewrite-min-size 1mb
auto-aof-rewrite-percentage 100
##AOF 文件和 Redis 命令是同步频率的,假设配置为 always,其含义为当 Redis 执行命令的时候,则同时同步到 AOF 文件,这样会使得 Redis 同步刷新 AOF 文件,造成缓慢。而采用 evarysec 则代表
## 每秒同步一次命令到 AOF 文件。
appendfsync everysec
#pidfile redis.pid
#进程pid文件,加port以示区分
pidfile /usr/local/app/redis/data/redis_6379.pid
# 后台运行 ---- docker中使用后台运行将无法启动容器(应该是容器无法检测后台运行进程)
# daemonize yes
databases 20
#设置容器初始化密码
requirepass 密码
4、docker运行项目jar包
#创建目录存放jar包及docker文件
mkdir /usr/local/app/backend
#创建dockerfile文件
FROM maven:3.6.3-jdk-8-openj9 as BUILD
ADD bootstrap-2.0.jar /app/bootstrap-2.0.jar
WORKDIR /app
ENV JAVA_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMPercentage=75.0 -XX:InitialRAMPercentage=75.0 -XX:MinRAMPercentage=75.0 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:NewRatio=1 -Duser.timezone=GMT+08"
ENV SPRING_OPTS=""
ENTRYPOINT [ "sh", "-c", "exec java $JAVA_OPTS -jar bootstrap-2.0.jar $SPRING_OPTS"]
#打包镜像并运行
docker build -t bootstrap:1.0.0 .
docker run -p 8888:8888 -d bootstrap:1.0.0
5、docker运行前端vue项目
#创建目录存放前端工程及docker、nginx.conf文件
mkdir /usr/local/app/view
#上传nginx.conf文件
worker_processes 2;
events {
use epoll;
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 6500;
client_max_body_size 20m;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json application/javascript;
gzip_vary on;
fastcgi_intercept_errors on;
server {
listen 80;
server_name 172.0.0.1;
root /usr/share/nginx/html;
index index.html index.htm;
location /plus {
try_files $uri $uri/ /plus/@router;
index index.html index.htm;
}
location /plus/@router {
rewrite ^.*$ /plus/index.html last;
}
}
}
#创建dockerfile文件
FROM nginx:alpine
WORKDIR /usr/share/nginx/html
RUN rm -f *
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist /usr/share/nginx/html/plus
#打包镜像并运行
docker build -t bootstrap-view:1.0.0 .
docker run -p 80:80-d bootstrap-view:1.0.0
遇到的问题:
1、本地运行正常,docker运行提示找不到css文件
修改vue.config.js的publicPath为./