赞
踩
- docker build -t ubuntu:15.10 . -t表示 tag .表示当前文件dockerfile
-
- docker build -t ruoyi/ruoyi-server:4.1.0 .
-
- docker images 查看镜像
-
- docker ps 或者 docker container ls 显示正在运行的容器
-
- docker run ubuntu /bin/echo "Hello world" 注意: /bin/echo "Hello world" 表示执行的命令
-
- docker run -i -t ubuntu:15.10 /bin/bash -t: 在新容器内指定一个伪终端或终端。 -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
-
- docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" 启动容器(后台模式)
-
- docker logs 2b1b7a428627 在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
-
- docker stop 2b1b7a428627
-
- docker start 2b1b7a428627 使用 docker start 启动一个已停止的容器
-
- docker ps -a 查看所有的容器命令
-
- docker run -itd --name ubuntu-test ubuntu /bin/bash docker的服务是在后台运行的,我们可以过 -d 指定容器的运行模式
-
- docker attach 想要进入容器,可以通过以下指令进入,注意: 如果从这个容器退出,会导致容器的停止
-
- docker exec -it 243c32535da7 /bin/bash 如果从这个容器退出,容器不会停止
-
- docker rm -f 1e560fca3906 删除容器
-
- docker pull training/webapp # 载入镜像
-
- docker run -d -P training/webapp python app.py -d:让容器在后台运行。 -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
-
- docker inspect test1 可以查看挂载点
-
- docker stop $(docker ps -a -q) 1.停止所有的container,这样才能够删除其中的images:
-
- docker rm $(docker ps -a -q) 如果想要删除所有container的话再加一个指令:
-
- docker rmi $(docker images -q) 删除所有镜像
docker-compose.yml 文件内容
- version: '3'
-
- services:
- mysql:
- image: mysql:8.0.27
- container_name: mysql
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- # root 密码
- MYSQL_ROOT_PASSWORD: root
- # 初始化数据库(后续的初始化sql会在这个库执行)
- MYSQL_DATABASE: ry-vue
- ports:
- - "3306:3306"
- volumes:
- # 数据挂载
- - /docker/mysql/data/:/var/lib/mysql/
- # 配置挂载
- - /docker/mysql/conf/:/etc/mysql/conf.d/
- command:
- # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
- --lower_case_table_names=1
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.36
-
- nginx-web:
- image: nginx:1.21.3
- container_name: nginx-web
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- ports:
- - "80:80"
- - "443:443"
- volumes:
- # 证书映射
- - /docker/nginx/cert:/etc/nginx/cert
- # 配置文件映射
- - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- # 页面目录
- - /docker/nginx/html:/usr/share/nginx/html
- # 日志目录
- - /docker/nginx/log:/var/log/nginx
- privileged: true
- restart: always
- networks:
- - ruoyi_net
-
- redis:
- image: redis:6.2.6
- container_name: redis
- ports:
- - "6379:6379"
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- volumes:
- # 配置文件
- - /docker/redis/conf:/redis/config:rw
- # 数据文件
- - /docker/redis/data/:/redis/data/:rw
- command: "redis-server /redis/config/redis.conf"
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.48
-
- minio:
- image: minio/minio:RELEASE.2021-10-27T16-29-42Z
- container_name: minio
- ports:
- # api 端口
- - "9000:9000"
- # 控制台端口
- - "9001:9001"
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- # 管理后台用户名
- MINIO_ACCESS_KEY: ruoyi
- # 管理后台密码,最小8个字符
- MINIO_SECRET_KEY: ruoyi123
- # https需要指定域名
- MINIO_SERVER_URL: ""
- # 开启压缩 on 开启 off 关闭
- MINIO_COMPRESS: "off"
- # 扩展名 .pdf,.doc 为空 所有类型均压缩
- MINIO_COMPRESS_EXTENSIONS: ""
- # mime 类型 application/pdf 为空 所有类型均压缩
- MINIO_COMPRESS_MIME_TYPES: ""
- volumes:
- # 映射当前目录下的data目录至容器内/data目录
- - /docker/minio/data:/data
- # 映射配置目录
- - /docker/minio/config:/root/.minio/
- command: server --address ':9000' --console-address ':9001' /data # 指定容器中的目录 /data
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.54
-
- ruoyi-server1:
- image: ruoyi/ruoyi-server:4.1.0
- container_name: ruoyi-server1
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- volumes:
- # 配置文件
- - /docker/server1/logs/:/ruoyi/server/logs/
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.60
-
- ruoyi-server2:
- image: "ruoyi/ruoyi-server:4.1.0"
- container_name: ruoyi-server2
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- volumes:
- # 配置文件
- - /docker/server2/logs/:/ruoyi/server/logs/
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.61
-
- ruoyi-monitor-admin:
- image: ruoyi/ruoyi-monitor-admin:4.1.0
- container_name: ruoyi-monitor-admin
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- volumes:
- # 配置文件
- - /docker/monitor/logs/:/ruoyi/monitor/logs
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.90
-
- ruoyi-xxl-job-admin:
- image: ruoyi/ruoyi-xxl-job-admin:4.1.0
- container_name: ruoyi-xxl-job-admin
- environment:
- # 时区上海
- TZ: Asia/Shanghai
- volumes:
- # 配置文件
- - /docker/xxljob/logs/:/ruoyi/xxljob/logs
- privileged: true
- restart: always
- networks:
- ruoyi_net:
- ipv4_address: 172.30.0.92
-
- networks:
- ruoyi_net:
- driver: bridge
- ipam:
- config:
- - subnet: 172.30.0.0/16
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装成功后,运行 docker ps 出现如下报错
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
表示未启动docker,运行下列语句即可
service docker start
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
安装完成后,运行
docker-compose -v
赋予权限即可
chmod +x /usr/local/bin/docker-compose
在服务器上单独新建文件夹名为ruoyi-admin
dockerfile文件如下
- # 基础镜像
- FROM java:8
- # author
- MAINTAINER kaixin
-
- EXPOSE 8080
-
- # 挂载目录
- VOLUME /home/ruoyi
- # 创建目录
- RUN mkdir -p /home/ruoyi
- # 指定路径
- WORKDIR /home/ruoyi
- # 复制jar文件到路径
- COPY ruoyi-admin.jar /home/ruoyi/ruoyi-admin.jar
- # 启动认证服务
- ENTRYPOINT ["java","-jar","ruoyi-admin.jar"]
执行如下命令
- cd /root/dockerbuild/ruoyi-admin/
- docker build -t ruoyi/ruoyi-server:4.1.0 .
这就构建出本地的镜像了。
依次再构建出ruoyi/ruoyi-xxl-job-admin和ruoyi/ruoyi-monitor-admin
cd到docker-compose.yml工作目录下,执行一次docker-compose up,此时必定会报错。报错如下
意思是不存在,nginx的配置文件。
为什么要执行一次呢,因为这个时候,docker-compose.yml下挂在的文件,会自动帮你生成,省的你手动去创建了。
根据提示,将提前准备好的nginx.conf还有redis.conf 放到宿主机对应的挂载文件夹底下即可。
这里提示下:如果开启了redis的aof模式,需要在redis的挂在文件下,手动创建appendonly.aof和dump.rdb
并且需要赋予权限
- chmod 777 /docker/redis/data/appendonly.aof
- chmod 777 /docker/redis/data/dump.rdb
否则会报错:
修改项目中application-dev.yml的配置,将访问的mysql、redis修改成,docker-compose.yml中配置的ip地址,然后重新打包,重新使用docker build构建镜像。
注意:由于上面执行过一次的docker-compose up 这个时候对应的镜像状态处于stop,并未消失,如果重新构建镜像,再执行docker-compose up,仍然使用的是上次构建成功的镜像,所以需要删除此次镜像的进程。
- #关闭所有模块
- docker-compose stop
- #删除所有模块
- docker-compose rm
- #删除Tag为空的镜像
- docker images|grep none|awk '{print $3}'|xargs docker rmi -f
ERROR: Pool overlaps with other one on this address space
networks参数下手动指定了subnet地址,此地址发生了冲突
- docker network ls # 查看docker网卡
- docker network inspect <网卡id> # 查看具体信息,找到与subnet冲突的是哪个
- docker network rm <网卡id> # 删除冲突的网卡
再执行docker-compose up
需要开启ipv4转发功能
- vi /etc/sysctl.conf
- net.ipv4.ip_forward=1 #添加这段代码
- systemctl restart network && systemctl restart docker #重启network服务
- sysctl net.ipv4.ip_forward #查看是否修改成功 (备注:返回1,就是成功)
给文件夹赋予权限即可。
chmod 777 /docker/redis/data/
大家还有碰到什么问题,也可以留言。
博主新推出的gitee免费开源项目(商城+APP+小程序+H5),有兴趣的小伙伴可以了解一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。