通过 yum 的方式安装docker环境,默认存储位置是系统盘下面的 /var/lib/docker,默认 pid 存放位置是 /var/run/docker.pid。一般我们系统盘空间都不是很大,所以有时候需要调整存储位置。

针对centos8的具体操作方法如下:

alpine docker 安装在 docker安装位置_容器

 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信息:

alpine docker 安装在 docker安装位置_容器_02

注:另外还有一种创建软连接的方式

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为./

alpine docker 安装在 docker安装位置_centos_03