Docker启动
engine配置
初始配置
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
}
}
配置
{
"experimental": true,
"debug": true,
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
reids
docker run -it -d --name redis -p 6379:6379 redis --bind 0.0.0.0 --protected-mode no
rabbitmq
- 创建卷
docker volume create rabbitmq-home - 运行
docker run -id --name=rabbitmq -v rabbitmq-home:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=swsk33 -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management
rocketmq
拉镜像
docker pull rocketmqinc/rocketmq
启动nameserver
docker run -d \
--privileged=true \
--name rmqnamesrv \
-v `pwd`/data/namesrv/logs:/root/logs \
-v `pwd`/data/namesrv/store:/root/store \
apache/rocketmq sh mqnamesrv
启动broker
docker run -d -p 10911:10911 -p 10909:10909 -v `pwd`/data/broker/logs:/root/logs -v `pwd`/data/broker/store:/root/store --name rmqbrokerv2 --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" dyrnq/rocketmq:4.8.0 sh mqbroker -c ../conf/broker.conf
zookeeper
docker run -d --name zookeeper -p 2181:2181 zookeeper
nacos
docker-compose
-
git clone
https://github.com/nacos-group/nacos-docker.git cd nacos-docker -
单机模式 Derby
docker-compose -f example/standalone-derby.yaml up -
单机模式 MySQL
- 如果希望使用MySQL5.7
docker-compose -f example/standalone-mysql-5.7.yaml up - 如果希望使用MySQL8
docker-compose -f example/standalone-mysql-8.yaml up
- 如果希望使用MySQL5.7
-
集群模式
docker-compose -f example/cluster-hostname.yaml up -
服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080' 服务发现 -
服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName -
发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld -
获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test
docker run
- 启动命令
docker run \
--name nacos-server \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=host.docker.internal \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e TIME_ZONE='Asia/Shanghai' \
-d nacos/nacos-server:v2.2.3-slim
# 拷贝配置
docker cp -a nacos-server:/home/nacos /Users/nexius/Docker/nacos
# 关闭该容器
docker stop nacos-server
# 删除该容器
docker rm nacos-server
#再次运行
docker run \
--name nacos-server \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=host.docker.internal \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e TIME_ZONE='Asia/Shanghai' \
-v /Users/nexius/Docker/nacos/conf:/home/nacos/conf \
-v /Users/nexius/Docker/nacos/logs:/home/nacos/logs \
-v /Users/nexius/Docker/nacos/data:/home/nacos/data \
-d nacos/nacos-server:v2.2.3-slim
oceanbase
# 根据当前容器部署最大规格的实例
docker run -p 2881:2881 --name obstandalone -d oceanbase/oceanbase-ce
# 部署 mini 的独立实例
docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce
nginx
docker run -d -p 8080:80 \
-p 8443:443 \
--name nginxweb \
--link answer-server:answerserver \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/logs:/var/log/nginx \
nginx
-d # 表示在一直在后台运行容器 -p 80:80 # 对端口进行映射,将本地8081端口映射到容器内部的80端口 –name # 设置创建的容器名称 -v # 将本地目录(文件)挂载到容器指定目录; –link answer-server:answerserver 这计划是指需要转向本机docker容器的别名
快速启动:
docker run -d -p 8080:80 -p 8443:443 \
-v /Users/nexius/Docker/nginx/html:/usr/share/nginx/html \
-v /Users/nexius/Docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /Users/nexius/Docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/nexius/Docker/docker/nginx/logs:/var/log/nginx \
--name nginx nginx
发现问题: macos在docker中不支持docker host模式,只能通过host.docker.internal的方式访问宿主机
微服务
gateway
- Dockerfile
FROM openjdk:8
ENV JAR_VERSION="1.0.13.0-SNAPSHOT" \
TZ=Asia/Shanghai \
APP_WORKDIR="/nexius/dev" \
APP_NAME="gateway" \
APP_PORT=8080 \
JAVA_OPTS="-Xms256m -Xmx512m" \
SKYWALKING_CONF="" \
NACOS_DEFAULT=" -Dspring.cloud.nacos.server-addr=nacos:8848 -Dspring.cloud.nacos.config.shared-configs[0].data-id=PUBLIC-COMMON.properties -Dspring.cloud.nacos.config.shared-configs[0].refresh=false -Dspring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP -Dspring.cloud.nacos.config.namespace=insurance-upgrade -Dspring.cloud.nacos.config.group=DEFAULT_GROUP -Dremote-config.base.boot.config-center.type=2 -Dremote-config.base.boot.discovery.type=3 -Dapollo.bootstrap.enabled=false -Dspring.cloud.nacos.username=nacos -Dspring.cloud.nacos.password=nacos" \
NACOS_CONF="" \
OTHER_CONF=""
WORKDIR ${APP_WORKDIR}
ADD ${APP_NAME}-${JAR_VERSION}.jar ./gateway/
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE $APP_PORT
ENTRYPOINT java ${JAVA_OPTS} ${SKYWALKING_CONF} ${NACOS_DEFAULT} ${NACOS_CONF} ${OTHER_CONF} -jar ./gateway/${APP_NAME}-${JAR_VERSION}.jar
- 启动命令
docker run -d -p 8666:8666 \
--name gateway \
-e NACOS_CONF="-Dspring.cloud.nacos.config.namespace=ats-dd -Dspring.cloud.nacos.server-addr=host.docker.internal:8848" gateway/v1
oracle(苹果芯片)
docker run --name oracle -d -p 1521:1521 bladex/oracle:19c-arm
授权
# 连接容器
docker exec -it oracle /bin/bash
# sysdba登录
sqlplus / as sysdba;
# 显示初始化的 pdbs
show pdbs;
# 修改system用户的密码
alter user system identified by system;
# 修改sys用户的密码
alter user sys identified by sys;
创建用户
#使用ORCLPDB PDB访问
alter session set container = ORCLPDB;
#创建用户
create user yourusername identified by youruserpwd;
#授予权限
grant connect,resource,dba to yourusername;
扩展 :oracle实例 ORCLPDB和orclcdb的区别
oracle从12c开始增加了增加了CDB和PDB的概念,数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系
- jdbc:oracle:thin:@//xxx:1521/ORCLPDB1:此URL连接到名为“ORCLPDB1.在Oracle多租户体系结构中,容器数据库(CDB)可以托管多个PDB。PDB充当CDB内的单独数据库。当您想要直接连接到特定PDB时,将使用此URL
- jdbc:oracle:thin:@//xxx:1521/ORCLCDB:此URL连接到容器数据库(CDB)本身,而不是特定的PDB。CDB是包含多个PDB的主数据库。当连接到CDB时,您可以访问和管理其中的所有PDB。此URL通常在需要执行管理任务或访问CDB级别的功能时使用。 选择使用哪个URL取决于应用程序的要求:
- 如果您的应用程序需要与特定的PDB进行交互,例如执行SQL语句或在该PDB中执行数据访问操作,则应在连接中使用jdbc:oracle:thin:@//xxx:1521/ORCLPDB
- 如果您的应用程序需要管理访问权限或需要在CDB级别执行任务,则可以使用jdbc:oracle:thin:@//xxx:1521/ORCLCDB
DM8
达梦8 pull镜像
docker pull qinchz/dm8-arm64
启动
docker run -d -p 5236:5236 \
--name dm8 \
-v /Users/nexius/Docker/dm8/data:/home/dmdba/data \
qinchz/dm8-arm64
初始化数据库
-- 查询表空间
select tablespace_name from dba_tablespaces;
-- 查询用户
select username from dba_users;
-- 创建表空间
CREATE TABLESPACE TEST DATAFILE 'TEST.DBF' SIZE 300;
-- 创建用户
create user nexius identified by "123456789" default tablespace TEST default index tablespace TEST;
-- 授权
grant "RESOURCE","PUBLIC","DBA","VTI" to nexius;
DEM 达梦统一运维监控
参考文档 docker-compose
version: '2.1'
services:
tomcat:
user: root
restart: always
container_name: tomcat
image: tomcat:8.5.84-jre8
privileged: true
environment:
- TZ="Asia/Shanghai"
ports:
- 8080:8080
volumes:
- /Users/chaz/dev/docker/data/dm8/tomcat/webapps:/Users/nexius/Docker/DEMwebapps
#- /Users/chaz/dev/docker/data/dm8/tomcat/conf:/Users/nexius/Docker/DEMconf
#- /Users/chaz/dev/docker/data/dm8/tomcat/logs:/Users/nexius/Docker/DEMlogs
#- /Users/chaz/dev/docker/data/dm8/tomcat/bin:/Users/nexius/Docker/DEMbin
#- /Users/chaz/dev/docker/data/dm8/bin:/opt/dmdbms/bin
- /etc/localtime:/etc/localtime
minio
docker run -p 9000:9000 -p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=mbti" \
-e "MINIO_SECRET_KEY=mbti@123" \
-v /Users/nexius/Docker/minio/data:/data \
minio/minio server \
/data --console-address ":9090" -address ":9000"