热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker镜像重启_docker怎么启动镜像

docker镜像重启_docker怎么启动镜像dock

docker常见镜像安装启动总结

  • 准备
    • 常用命令
  • mysql
    • mysql5.7 单机版安装
    • mysql8.0单机版安装
    • mysql8.0主从复制安装配置
    • springboot使用shardingjdbc配置读写分离
  • Elasticsearch
  • logstash
  • rocketmq
准备

安装docker镜像时,先去docker hub上查找对应的官方镜像,然后选择版本,然后根据描述汇中的命令来启动镜像

docker官网地址:https://hub.docker.com/

常用命令



  1. 拉取镜像 docker pull 镜像名称:镜像版本(不写默认latest)

  2. 查看镜像列表 docker images

  3. 查看正在运行的容器 docker ps

  4. 查看所有的容器 docker ps -a

  5. 进入容器 docker exec -it 容器名称(或容器id) /bin/bash

  6. 容器中退出 exit

  7. 查看容器实时日志 docker logs -f 容器名称(或容器id)

  8. 删除镜像 docker rmi 镜像id(或镜像名称:标签)

  9. 强制删除镜像 docker rmi -f 镜像id(或镜像名称:标签)

  10. 删除容器 docker rm 容器id或容器名称

  11. 强制删除容器 docker rm -f 容器id或容器名称

  12. 镜像导出 docker save -o 导出后的名称.tar 镜像标识

  13. 镜像导入 docker load <导入的文件

  14. 修改容器为开机启动 docker update --restart=always 容器标识

  15. 构建镜像:docker build -t runoob/ubuntu:v1 .

  16. 提交容器为新的镜像:docker commit {containerId} {image:tag}


mysql

mysql5.7 单机版安装

下载:docker pull mysql:5.7
镜像启动:

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

命令注释:
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后台启动 镜像名称:标签

mysql8.0单机版安装



  1. 下载 docker pull mysql:8.0

  2. 镜像启动

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


  1. 查看容器是否启动 docker ps -a


mysql8.0主从复制安装配置

在目录/data/mysql/conf上创建mysql.cnf配置文件

[mysqld]
#设置服务器id,为1表示主服务器,实例唯一ID,不能和canal的slaveId重复
server_id=1
#启动MySQ二进制日志系统
log-bin=mysql-bin
#选择row模式
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-do-db=xxl_job
#不同步mysql系统数据库
binlog-ignore-db=mysql

在目录/data/mysql2/conf上创建mysql.cnf配置文件

[mysqld]中配置如下
#实例唯一ID,不能和canal的slaveId重复,表示为从数据库
server-id=2
#启动MySQL二进制日志系统
log-bin=mysql-bin
#选择row模式
binlog-format=ROW
#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-do-db=xxl_job
#不同步mysql系统数据库
replicate-ignore-db=mysql

在目录/data/mysql3/conf上创建mysql.cnf配置文件

[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

接着上面启动mysql第二个容器和第三个容器,并重启第一个容器

重启mysql容器:docker restart mysql

镜像启动mysql2容器:

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

镜像启动mysql3容器:

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

在主数据库中执行 show master status;
在这里插入图片描述
在从库中执行以下命令:

CHANGE MASTER TO
MASTER_HOST='服务器主机地址',
MASTER_USER='用户名',
MASTER_PASSWORD='密码!',
MASTER_LOG_FILE='二进制文件名',
MASTER_LOG_POS=位置;

我这边对应的命令是:

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;

如果执行报下面的错误,需要先通过命令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 代表成功

不成功的,请检查以下几项


  1. 主库和从库在开启同步时表结构和数据是否是相同的,有差别需要同步后再开启主从复制。

  2. 查看主库同步的数据库是否有其他连接,如果有先关闭,开启主从复制后再开启

  3. 检查slave中的ip用户等是否正确

  4. 多试几次

最后就是主从复制检验了,主库数据变更看是否自动同步到从库

springboot使用shardingjdbc配置读写分离

引入依赖


<dependency>
<groupId>org.apache.shardingspheregroupId>
<artifactId>sharding-jdbc-spring-boot-starterartifactId>
<version>4.0.0-RC1version>
dependency>

<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot-starterartifactId>
<version>1.1.14version>
dependency>

application.properties中的配置

# 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

Elasticsearch

拉取:docker pull elasticsearch:7.16.3
启动:

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

命令注释:

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 # 镜像名称:镜像标签

logstash

拉取:docker pull logstash:7.16.3
启动:

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

rocketmq

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


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
author-avatar
落陌_漾吇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有