赞
踩
# yum 包更新到最新
yum update
# 安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 查看docker版本,验证是否验证成
docker -v
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
docker images
docker images -q # 查看所有镜像id
docker search 镜像名称
docker pull 镜像名称 # 名称:版本号
# 可以去hub.docker.com 查看对应镜像的版本号
docker rmi 镜像id # 删除指定id的镜像
docker build -t 镜像名称:镜像版本 .
docker ps # 查看正在运行的容器
docker ps -a # 查看所有历史容器
docker run -it --name=n1 镜像名称:版本 /bin/bash # 创建一个容器名为 n1 ,并分配一个终端,进入 /bin/bash, 退出容器后容器自动关闭
docker run -id --name=n2 镜像名称:版本 # 创建一个容器命名为n2,后台运行,并且进入容器后退出也不会关闭容器
-i : 保持容器运行, 通常与 -t 一起使用,使用 it 参数创建容器, 创建完成之后自动进入容器, 退出后自动关闭
-t : 为容器重新分配一个伪输入终端
-d : 以守护(后台)模式运行容器, 创建一个容器在后台运行, 需要手动进入容器, 退出后容器不会关闭
-it : 创建的容器一般叫做交互式容器
-id : 创建的容器一般称为守护式容器
–name : 命名
docker exec -it 容器名称 /bin/bash # 进入容器,并且退出容器不会关闭
docker start 容器名称
docker stop 容器名称
docker rm 容器名称
docker inspect 容器名称
docker run -it --name=xx \
-v 宿主机目录:容器内目录
-v 宿主机目录:容器内目录 # 第二个挂载的目录
...
centos:7 # 要创建的容器的镜像名
docker run -it --name=n3 -v /volume centos:7
docker run -it --name=n1 --volumes-from n3 centos:7
docker search mysql
docker pull mysql:5.7
# 在宿主机/root目录下创建mysql目录,用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
# -id 守护进程方式创建 mysql 容器
# -p 设置端口映射 容器端口:宿主机端口
# -v 配置文件,日志文件,数据文件映射
# -e MYSQL_ROOT_PASSWORD 设置 mysql 账户密码
version: '3' services: mysql: image: mysql:5.7 container_name: mysql restart: always ports: - 3306:3306 network_mode: host volumes: - /data/mysql/log:/var/log/mysql - /data/mysql/data:/var/lib/mysql - /data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf environment: MYSQL_ROOT_PASSWORD: "123456" TZ: Asia/Shanghai
conf文件配置:my.cnf
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init_connect='SET collation_connection=utf8_unicode_ci' init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake skip-name-resolve max_allowed_packet=2048M interactive_timeout=60 wait_timeout=60 max_connections=301 #max_user_connections=10 server-id=1 sync_binlog = 1 log_bin = mysql-bin binlog_format = mixed expire_logs_days = 14 max_binlog_size = 100m binlog_cache_size = 4m max_binlog_cache_size= 2048m #binlog-do-db=data_translate binlog-ignore-db=mysql binlog-ignore-db=sys binlog-ignore-db=information-schema binlog-ignore-db=performance_schema slave-skip-errors = all sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
docker exec -it c_mysql /bin/bash
在 navicat 或者 SQLyog 等可视化工具连接,输入宿主机 ip 和 映射的端口号即可
docker pull tomcat
# 在宿主机/root 目录下创建tomcat目录,用户存放tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id \
--name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
# -v 宿主机当前目录映射到tomcat存放目录
/text/index.html
浏览器中输入ip:8080/text/index.html
访问成功docker pull nginx:1.20
# 在宿主机/root 目录下创建nginx目录,用于存放nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf 目录下创建nginx.conf文件
touch nginx.conf
vim nginx.conf
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; server { listen 80; server_name 10.2.128.46; #前端页面转发 location / { root /usr/share/nginx/html/dist; try_files $uri $uri/ /index.html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
docker run
docker run -id --name=c_nginx \
-p 80:80
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
docker-compose
version: '3'
services:
nginx:
image: nginx:1.20
container_name: nginx
environment:
TZ: Asia/Shanghai
restart: always
ports:
- 80:80
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
- /data/nginx/log:/var/log/nginx
docker run -id --name=c_redis -p 6379:6379 redis:6.0
docker-compose方式
version: '3'
services:
master:
image: redis:6.0
container_name: redis
network_mode: host
restart: always
command: redis-server /etc/redis/redis.conf --appendonly yes
ports:
- 6379:6379
privileged: true
volumes:
- ./data:/data
- ./conf/redis.conf:/etc/redis/redis.conf
- ./log:/var/log/redis
redis.conf配置文件配置文件内容
./redis-cli.exe -h 192.xxx.xxx.xxx -p 6379
docker run -id --restart always \
-p 9001:9001 -p 9002:9002 \
--name=minio \
-v /data/minio/tpm/data:/data \
-v /data/minio/tpm/config:/root/.minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=gotion@1234" \
minio/minio \
server /data \
--console-address ":9001" --address ":9002"
docker-compose方式
version: '3' services: minio: image: minio/minio container_name: minio network_mode: host restart: always ports: - 29000:29000 #api端口 - 29001:29001 #控制台端口 privileged: true command: server --console-address ":29001" /data volumes: - ./data:/data - ./config:/root/.minio - /etc/localtime:/etc/localtime:ro environment: - MINIO_ROOT_USER=admin - MINIO_ROOT_PASSWORD=gotion@123
拉取镜像
docker pull nacos/nacos-server:v2.1.1
创建网络(可以使用默认host)
docker network create --driver bridge --subnet 192.168.40.0/16 --gateway 192.168.40.1 nacos_net
创建目录
mkdir /home/docker/nacos-compose
#nacos-compose目录结构如下:
nacos-compose
├── docker-compose.yml -- docker-compose 配置文件
├── master -- nacos节点的相关文件
├── application.properties -- naocs节点挂载的配置文件
├── logs -- nacos 节点挂载的日志文件夹
├── slave1 -- nacos节点的相关文件
├── application.properties -- naocs节点挂载的配置文件
├── logs -- nacos 节点挂载的日志文件夹
├── slave2 -- nacos节点的相关文件
├── application.properties -- naocs节点挂载的配置文件
├── logs -- nacos 节点挂载的日志文件夹
docker-compose.yml内容如下:
version : '3.3' #docker-compose版本 services: nacos-master: # 容器名称 container_name: nacos-master # 镜像 image: nacos/nacos-server:v2.1.1 environment: # 集群节点 - NACOS_SERVERS=192.168.40.2:8848 192.168.40.3:8848 192.168.40.4:8848 volumes: # 文件挂载 - ./master/logs/:/home/nacos/logs - ./master/application.properties:/home/nacos/conf/application.properties ports: # 端口映射 - "8848:8848" # 指定网络,IP networks: nacos_net: ipv4_address: 192.168.40.2 nacos-slave1: container_name: nacos-slave1 image: nacos/nacos-server:v2.1.1 environment: - NACOS_SERVERS=192.168.40.2:8848 192.168.40.3:8848 192.168.40.4:8848 volumes: - ./slave1/logs/:/home/nacos/logs - ./slave1/application.properties:/home/nacos/conf/application.properties ports: - 8850:8848 networks: nacos_net: ipv4_address: 192.168.40.3 nacos-slave2: container_name: nacos-slave2 image: nacos/nacos-server:v2.1.1 environment: - NACOS_SERVERS=192.168.40.2:8848 192.168.40.3:8848 192.168.40.4:8848 volumes: - ./slave2/logs/:/home/nacos/logs - ./slave2/application.properties:/home/nacos/conf/application.properties ports: - "8852:8848" networks: nacos_net: ipv4_address: 192.168.40.4 # 指定使用已经创建的网络 networks: nacos_net: external: true
application.properties内容如下
server.servlet.contextPath= server.error.include-message=ON_PARAM # 端口号 server.port=8848 # 数据库信息的配置 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://ip:3306/nacos_config?useUnicode=true&characterEncoding=utf8&useSSL=false db.user=root db.password=123456 # 以下为默认配置,暂时不用管 ### Connection pool configuration: hikariCP db.pool.config.connectionTimeout=30000 db.pool.config.validationTimeout=10000 nacos.naming.empty-service.auto-clean=true nacos.naming.empty-service.clean.initial-delay-ms=50000 nacos.naming.empty-service.clean.period-time-ms=30000 management.metrics.export.elastic.enabled=false management.metrics.export.influx.enabled=false server.tomcat.accesslog.enabled=true ### The access log pattern: server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i server.tomcat.basedir=file:. nacos.core.auth.system.type=nacos nacos.core.auth.enabled=true nacos.core.auth.caching.enabled=true nacos.core.auth.enable.userAgentAuthWhite=false nacos.core.auth.server.identity.key=serverIdentity nacos.core.auth.server.identity.value=security ### The token expiration in seconds: nacos.core.auth.plugin.nacos.token.expire.seconds=18000 ### The default token: nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789 cos.istio.mcp.server.enabled=false
启动数据库并导入nacos的脚本sql
source /root/nacos_config.sql
启动docker
配置nginx代理
#使用镜像和本机的nginx都行 #负载均衡,权重的什么的自己加 upstream nacos_servers { server 宿主机:8848; server 宿主机:8850; server 宿主机:8852; } server { listen 81; server_name 宿主机ip; location / { proxy_pass http://nacos_servers/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } #访问地址 宿主机IP+81
docker build -f ./dockerfile_centos -t 镜像名称:版本 .
# -f 指定 dockerfile 文件路径
# -t 设置新镜像的名称和版本
# . 代表 dockerfile 寻址路径
# 文件名 dockerfile_springboot
FROM java:8
MAINTAINER Powerstot <598227099@qq.com>
ADD SpringBootDemo-1.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar
# ADD 重命名 jar 包
# CMD 创建容器后默认执行的命令
docker build \
-f ~/dockerfile/dockerfile_springboot \
-t springboot \
.
# -f 指定 dockerfile 文件路径
# -t 名称默认 latest 版本
docker run -id \
--name=springboordemo \
-p 9000:8080 \
springboot
# -p 指定端口,方便外部访问内部的 tomcat 端口
http://服务器IP:9000/hello
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 这是国内 daocloud 的镜像,国外 github 比较慢,要使用 github 的话,直接修改域名为 github.com 即可
chmod +x /usr/local/bin/docker-compose
docker-compose -version
rm /usr/local/bin/docker-compose
# 二进制包下载 直接删除文件即可
mkdir ~/docker-compose
cd ~/docker-compose
version: '3' services: nginx: container_name: gotion-data restart: always image: java:8 network_mode: gdmo-sp #设置容器的网络模式 privileged: true #用来给容器root权限,不安全的 volumes: - /home/gdmo-sp/gotion-data/gotion-data-1.0.0.jar:/gotion-data-1.0.0.jar - /home/gdmo-sp/logs:/logs - /etc/localtime:/etc/localtime ports: - "8124:8124" enviroment: -TZ="Asia/Shanghai" entrypoint: java -server -Xms256m -Xmx256m -jar -Dserver.port=8124 gotion-data-1.0.0.jar
–创建桥接网络
docker network create -d bridge --subnet 162.28.0.0/16 gdmo-sp
-查看network
docker network ls
-查看网络路由
route
mkdir -p ./nginx/conf.d
# -p 表示没有父目录就连父目录一起创建
server {
listen 80;
access_log off;
location / {
proxy_pass http://springboot:8080;
}
}
# 反向代理将 springboot 的 8080 端口代理到 80 端口,外部访问 80 即访问到了项目的 8080 端口
docker-compose up
# -d 后台启动,不加就是前台启动,打印日志
# docker-compose 会进行 nginx 和 springboot 两个容器的创建,然后按照配置文件设置反向代理,再 up 两个容器
http://服务器IP/hello
# 拉取私有仓库镜像 docker pull registry # 启动私有仓库容器 docker run -id --name=registry -p 5000:5000 registry # 浏览器输入地址 http://私有仓库服务器ip:5000/v2/_catalog # 显示 {"repositories":[]} 表示私有仓库 搭建成功 # 修改daemon.json vim /etc/docker/daemon.json # 添加一个key,用于让 docker 信任私有仓库地址 {"insecure-registries": ["私有仓库服务器ip:5000"]} # 重启docker 服务 systemctl restart docker # 开启 registry 容器 docker start registry
# 标记镜像为私有仓库的镜像
docker tag centos:7 私有仓库服务器IP:5000/centos:7
# 上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:7
# 拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。