大家好,又见面了,我是你们的朋友全栈君。
docker常见镜像安装启动总结
- 准备
- 常用命令
- mysql
- mysql5.7 单机版安装
- mysql8.0单机版安装
- mysql8.0主从复制安装配置
- springboot使用shardingjdbc配置读写分离
- Elasticsearch
- logstash
- rocketmq
准备
安装docker镜像时,先去docker hub上查找对应的官方镜像,然后选择版本,然后根据描述汇中的命令来启动镜像
docker官网地址:https://hub.docker.com/
常用命令
- 拉取镜像
docker pull 镜像名称:镜像版本(不写默认latest)
- 查看镜像列表
docker images
- 查看正在运行的容器
docker ps
- 查看所有的容器
docker ps -a
- 进入容器
docker exec -it 容器名称(或容器id) /bin/bash
- 容器中退出
exit
- 查看容器实时日志
docker logs -f 容器名称(或容器id)
- 删除镜像
docker rmi 镜像id(或镜像名称:标签)
- 强制删除镜像
docker rmi -f 镜像id(或镜像名称:标签)
- 删除容器
docker rm 容器id或容器名称
- 强制删除容器
docker rm -f 容器id或容器名称
- 镜像导出
docker save -o 导出后的名称.tar 镜像标识
- 镜像导入
docker load
- 修改容器为开机启动
docker update --restart=always 容器标识
- 构建镜像:
docker build -t runoob/ubuntu:v1 .
- 提交容器为新的镜像:
docker commit {containerId} {image:tag}
mysql
mysql5.7 单机版安装
下载:docker pull mysql:5.7
镜像启动:
<code style="margin-left:0">docker run --name mysql5.7 \ -v /data/mysql5.7/data:/var/lib/mysql \ -v /data/mysql5.7/conf:/etc/mysql/conf.d \ -v /data/mysql5.7/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3310:3306 -d mysql:5.7</code>
<code style="margin-left:0">命令注释: docker run --name mysql5.7 \ #容器名称 -v /data/mysql5.7/data:/var/lib/mysql \ #挂载数据目录 -v /data/mysql5.7/conf:/etc/mysql/conf.d \ #挂载配置目录 -v /data/mysql5.7/log:/var/log/mysql \ #挂载日志目录 -e MYSQL_ROOT_PASSWORD=123456 \ #设置ROOT初始化密码 -p 3310:3306 -d mysql:5.7 #-p 端口映射 -d后台启动 镜像名称:标签</code>
mysql8.0单机版安装
- 下载
docker pull mysql:8.0
- 镜像启动
<code style="margin-left:0">docker run --name mysql \ -v /data/mysql/data:/var/lib/mysql \ -v /data/mysql/conf:/etc/mysql/conf.d \ -v /data/mysql/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3306:3306 -d \ mysql:8.0</code>
- 查看容器是否启动
docker ps -a
mysql8.0主从复制安装配置
在目录/data/mysql/conf
上创建mysql.cnf
配置文件
<code style="margin-left:0">[mysqld] #设置服务器id,为1表示主<a href="https://www.mhzhuji.com/kwck/txcloud" class="lar_link lar_link_outgoing" data-linkid="205" data-postid="1574" title="腾讯云" rel="nofollow" target="_blank" >服务器</a>,实例唯一ID,不能和canal的slaveId重复 server_id=1 #启动MySQ二进制日志系统 log-bin=mysql-bin #选择row模式 binlog-format=ROW #需要同步的数据库名,如果有多个<a href="https://www.mhzhuji.com/kwck/57" class="lar_link lar_link_outgoing" data-linkid="219" data-postid="1574" title="数据库MySQL" rel="nofollow" target="_blank" >数据库</a>,可重复此参数,每个数据库一行 binlog-do-db=xxl_job #不同步mysql系统<a href="https://www.mhzhuji.com/kwck/57" class="lar_link lar_link_outgoing" data-linkid="219" data-postid="1574" title="数据库MySQL" rel="nofollow" target="_blank" >数据库</a> binlog-ignore-db=mysql</code>
在目录/data/mysql2/conf
上创建mysql.cnf
配置文件
<code style="margin-left:0">[mysqld]中配置如下 #实例唯一ID,不能和canal的slaveId重复,表示为从<a href="https://www.mhzhuji.com/kwck/57" class="lar_link lar_link_outgoing" data-linkid="219" data-postid="1574" title="数据库MySQL" rel="nofollow" target="_blank" >数据库</a> server-id=2 #启动MySQL二进制日志系统 log-bin=mysql-bin #选择row模式 binlog-format=ROW #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行 replicate-do-db=xxl_job #不同步mysql系统数据库 replicate-ignore-db=mysql</code>
在目录/data/mysql3/conf
上创建mysql.cnf
配置文件
<code style="margin-left:0">[mysqld]中配置如下 #实例唯一ID,不能和canal的slaveId重复,表示为从数据库 server-id=3 #启动MySQL二进制日志系统 log-bin=mysql-bin #选择row模式 binlog-format=ROW #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行 replicate-do-db=xxl_job #不同步mysql系统数据库 replicate-ignore-db=mysql</code>
接着上面启动mysql第二个容器和第三个容器,并重启第一个容器
重启mysql容器:docker restart mysql
镜像启动mysql2容器:
<code style="margin-left:0">docker run --name mysql2 \ -v /data/mysql2/data:/var/lib/mysql \ -v /data/mysql2/conf:/etc/mysql/conf.d \ -v /data/mysql2/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3307:3306 -d \ mysql:8.0</code>
镜像启动mysql3容器:
<code style="margin-left:0">docker run --name mysql3 \ -v /data/mysql3/data:/var/lib/mysql \ -v /data/mysql3/conf:/etc/mysql/conf.d \ -v /data/mysql3/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3308:3306 -d \ mysql:8.0</code>
在主数据库中执行 show master status;
在从库中执行以下命令:
<code style="margin-left:0">CHANGE MASTER TO MASTER_HOST='服务器主机地址', MASTER_USER='用户名', MASTER_PASSWORD='密码!', MASTER_LOG_FILE='二进制文件名', MASTER_LOG_POS=位置;</code>
我这边对应的命令是:
<code style="margin-left:0">CHANGE MASTER TO MASTER_HOST='192.168.73.168', MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=156;</code>
如果执行报下面的错误,需要先通过命令stop slave;
停一下之前启动是slave> 3021 - This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
通过命令start slave;
开启主从同步
通过命令show slave status;
查看开启同步状态是否成功
slave_io_running 和 slave_sql_running 都是 yes 代表成功
不成功的,请检查以下几项
- 主库和从库在开启同步时表结构和数据是否是相同的,有差别需要同步后再开启主从复制。
- 查看主库同步的数据库是否有其他连接,如果有先关闭,开启主从复制后再开启
- 检查slave中的ip用户等是否正确
- 多试几次
最后就是主从复制检验了,主库数据变更看是否自动同步到从库
springboot使用shardingjdbc配置读写分离
引入依赖
<code style="margin-left:0"><!-- sharding --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0-RC1</version> </dependency> <!--阿里数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.14</version> </dependency></code>
application.properties中的配置
<code style="margin-left:0"># shardingjdbc 配置 spring.shardingsphere.datasource.names=master,slave1,slave2 # 主数据源配置 spring.shardingsphere.datasource.master.type=org.apache.tomcat.jdbc.pool.DataSource spring.shardingsphere.datasource.master.driver-class-name=com.mysql.jdbc.Driver spring.shardingsphere.datasource.master.url=jdbc:mysql://192.168.73.168:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 spring.shardingsphere.datasource.master.username=root spring.shardingsphere.datasource.master.password=123456 # 从数据源配置1 spring.shardingsphere.datasource.slave1.type=org.apache.tomcat.jdbc.pool.DataSource spring.shardingsphere.datasource.slave1.driver-class-name=com.mysql.jdbc.Driver spring.shardingsphere.datasource.slave1.url=jdbc:mysql://192.168.73.168:3307/xxl_job?Unicode=true&characterEncoding=UTF-8 spring.shardingsphere.datasource.slave1.username=root spring.shardingsphere.datasource.slave1.password=123456 # 从数据源配置2 spring.shardingsphere.datasource.slave2.type=com.alibaba.druid.pool.DruidDataSource spring.shardingsphere.datasource.slave2.driver-class-name=com.mysql.jdbc.Driver spring.shardingsphere.datasource.slave2.url=jdbc:mysql://192.168.73.168:3308/xxl_job?Unicode=true&characterEncoding=UTF-8 spring.shardingsphere.datasource.slave2.username=root spring.shardingsphere.datasource.slave2.password=123456 #配置默认数据源master 默认数据源,主要用于写 spring.shardingsphere.sharding.default-data-source-name=master ## 读写分离配置 spring.shardingsphere.masterslave.load-balance-algorithm-type=round_robin ## 最终的数据源名称 spring.shardingsphere.masterslave.name=dataSource ## 主库数据源名称 spring.shardingsphere.masterslave.master-data-source-name=master ## 从库数据源名称列表,多个逗号分隔 spring.shardingsphere.masterslave.slave-data-source-names=slave1,slave2 ## 开启SQL显示 spring.shardingsphere.props.sql.show=true</code>
Elasticsearch
拉取:docker pull elasticsearch:7.16.3
启动:
<code style="margin-left:0">docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /data/elasticsearch/data:/usr/share/elasticsearch/data -v /data/elasticsearch/config:/usr/share/elasticsearch/config elasticsearch:7.16.3</code>
命令注释:
<code style="margin-left:0">docker run -d --name elasticsearch # -d 后台启动 --name 容器名称 -p 9200:9200 -p 9300:9300 # -p 端口映射 -e "discovery.type=single-node" # 启动参数:单节点启动 -v /data/elasticsearch/data:/usr/share/elasticsearch/data # 挂载数据目录 -v /data/elasticsearch/config:/usr/share/elasticsearch/config # 挂载配置目录 elasticsearch:7.16.3 # 镜像名称:镜像标签</code>
logstash
拉取:docker pull logstash:7.16.3
启动:
<code style="margin-left:0">docker run -d \ --name=logstash \ --restart=always \ -p 5044:5044 \ -v /data/logstash/data/:/usr/share/logstash/data/ \ -v /data/logstash/config/:/usr/share/logstash/config/ \ -v /data/logstash/logs/:/usr/share/logstash/logs/ \ logstash:7.16.3</code>
rocketmq
<code style="margin-left:0">mkdir -p /data/rocketmq/rmqserver01/logs mkdir -p /data/rocketmq/rmqserver01/store mkdir -p /data/rocketmq/rmqbroker01/logs mkdir -p /data/rocketmq/rmqbroker01/store mkdir -p /data/rocketmq/rmqbroker01/conf #创建server容器 docker create -p 9876:9876 --name rmqserver01 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" -v /data/rocketmq/rmqserver01/logs:/opt/logs -v /data/rocketmq/rmqserver01/store:/opt/store foxiswho/rocketmq:server-4.3.2 #启动容器 docker start rmqserver rmqbroker #启动broker容器 docker run -it -d --net host --name rmqbroker01 \ -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \ -e "JAVA_OPTS=-Duser.home=/opt" \ -v /data/rocketmq/rmqbroker01/conf/broker.conf:/etc/rocketmq/broker.conf \ -v /data/rocketmq/rmqbroker01/logs:/opt/logs \ -v /data/rocketmq/rmqbroker01/store:/opt/store \ --privileged=true \ foxiswho/rocketmq:broker-4.3.2 #启动rocketmq-console docker run -d \ -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.73.168:9876;192.168.73.168:9877 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -p 8082:8080 -t \ styletang/rocketmq-console-ng:1.0.0</code>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190786.html原文链接:https://javaforall.cn
未经允许不得转载:木盒主机 » docker镜像重启_docker怎么启动镜像