启动docker
systemctl start docker
docker 启动已经停止的容器
docker start idOrName
PS:idOrName为容器的id或者名称
1、安装mysql镜像
拉取mysql5.7的镜像
docker pull mysql:5.7
查看镜像
docker images
启动mysql
#启动mysql
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
查询容器id为39b1d9706a03 内的文件目录
docker exec 39b1d9706a03 ls -a /
复制配置文件
docker cp mysql:/etc/my.cnf /home/hff/software/docker/mysql/conf/
打开/home/hff/software/docker/mysql/conf/my.cnf 文件,增加以下内容。
# 配置文件中添加如下内容,注意是在在[mysqld]目录中
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server-id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
删除原 MySQL 容器,通过新配置创建新的容器。
# 删除运行中的 MySQL 容器
docker rm -f mysql
# 运行 Docker 容器命令
# /etc/localtime 时间同步
# /docker/software/mysql/conf 同步配置文件,上面配置的内容就会覆盖容器中的配置文件
# /docker/software/mysql/log 同步日志目录
# /docker/software/mysql/data 同步 MySQL 的一些文件内容(对数据进行备份)
# MYSQL_ROOT_PASSWORD=root 默认 root 的密码是 root
docker run --name mysql \
-p 3306:3306 \
-v /home/hff/software/docker/mysql/conf/:/etc \
-v /home/hff/software/docker/mysql/log:/var/log \
-v /home/hff/software/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
进入到 MySQL 的命令行模式来给 root 账号授权所有 ip 能够访问。
# 使用 MySQL 容器中的命令行
docker exec -it mysql /bin/bash
# 使用 MySQL 命令打开客户端:
mysql -uroot -proot --default-character-set=utf8
# 接着创建一个账户,该账号所有 IP 都能够访问
grant all privileges on *.* to 'root' @'%' identified by 'root';
# 刷新生效
FLUSH PRIVILEGES;
2、安装redis镜像
拉取镜像
docker pull redis
本地创建一个配置文件/home/hff/software/docker/redis/conf
/redis.conf
bind 0.0.0.0
protected-mode no
port 6379
daemonize no
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
requirepass root
创建 redis 容器,并挂载配置
docker run --name redis -p 6379:6379 -v /home/hff/software/docker/redis/data:/data -v /home/hff/software/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
- –name : 容器名称
- -p 端口映射 宿主机:容器
- -v 挂载自定义配置 自定义配置:容器内部配置
- -d 后台运行
- redis-server 使用指定的配置文件启动
进入redis
docker exec -it redis redis-cli
3、安装nacos
拉取镜像
docker pull nacos/nacos-server:v2.1.1
创建挂载目录
mkdir -p /home/hff/software/docker/nacos/conf
mkdir -p /home/hff/software/docker/nacos/logs
mkdir -p /home/hff/software/docker/nacos/data
PS: -p 作用是在创建多级文件时,不存在某一级文件就会创建,存在就使用原文件
启动nacos,复制相关文件到挂载目录
docker run --name nacos -d -p 8848:8848 -e MODE=standalone nacos/nacos-server:v2.1.1
- docker run -d :启动容器, -d 表示后台启动并返回容器id
- –name nacos :容器名称为nacos
- -p 8848:8848 :容器相关端口号,“:”前为宿主机访问启动容器端口号,“:”后为容器端口号
- -e MODE=standalone : 以单机版启动
- nacos/nacos-server:v2.1.1 :启动容器的nacos镜
(1)复制容器配置文件到宿主机
docker cp nacos:/home/nacos/conf/ /home/hff/software/docker/nacos
docker cp nacos:/home/nacos/logs/ /home/hff/software/docker/nacos
docker cp nacos:/home/nacos/data/ /home/hff/software/docker/nacos
PS:这里的本地文件没有加上conf,如果加上了会在conf下再创建一个conf,后面的同理。
启动nacos
docker run -d --name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--env MODE=standalone \
--env NACOS_AUTH_ENABLE=true \
-v /home/hff/software/docker/nacos/conf:/home/nacos/conf \
-v /home/hff/software/docker/nacos/logs:/home/nacos/logs \
-v /home/hff/software/docker/nacos/data:/home/nacos/data \
nacos/nacos-server:v2.1.1
-d 表示运行在后台,--name 指定名称为nacos
-p 8848:8848 前者为暴露给外部访问的端口,后者为nacos容器端口
-p 9848:9848 9848是nacos2.0.0版本以上必须要加上端口映射
-p 9849:9849 9849是nacos2.0.0版本以上必须要加上端口映射
--env MODE=standalone nacos以单机版启动,默认为cluster(集群)
--env NACOS_AUTH_ENABLE=true 如果使用官方镜像,请在启动docker容器时,添加如下环境变量
-v /home/hff/software/docker/nacos/conf:/home/nacos/conf nacos 配置文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /home/hff/software/docker/nacos/logs:/home/nacos/logs nacos 日志文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /home/hff/software/docker/nacos/data:/home/nacos/data nacos 数据文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
nacos/nacos-server:v2.1.1 指定 docker nacos 版本
测试是否能成功访问
http://192.168.253.110:8848/nacos