Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker 是由一个个容器组成的,每个容器都是由镜像来构建生成的,官方的Docker镜像官网有各种各样的镜像,可以直接拉下来直接进行使用。
第一步先下载docker安装,这里的话不同的系统有不同的方式,windows和mac都是有图形化界面的,linux是需要命令行安装,使用命令行操作的,进入下载地址选择自己当前系统的版本。
这里演示使用的是mac版本
Linux执行curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun进行安装,因为这里还使用到了Docker-compose,那么我们还得安装docker-compose,Mac的图形化是已经带有不需要在额外安装的
执行
$ sudo curl -L"https://github.com/docker/compose/releases/download/1.24.1/docker-compose-(uname -m)" -o /usr/local/bin/docker-compose
安装docker-compose
1.安装Docker
我这里使用的是Mac的Docker图形化版本,其他的安装都是大同小异
这里将安装包打开后拖到目录中
2.安装完成后打开docker,点击右上角登录,可以看到这个首页目前是没有运行中的容器的,可以复制中间的命令去执行 来创建一个初始的镜像
执行了命令后会在镜像仓库中拉去了docker/getting-started这个镜像
这时候我们可以通过浏览器访问127.0.0.1来查看这个镜像
这里是初始了一个web页面映射到80端口所以我们可以直接访问到容器内的内容
- 接下来去Docker镜像官网下载我们需要安装的mysql对应的镜像.找到对应的镜像拉取命令
这里搜索后可以看到有很多个mysql的搜索结果,这里选择MySQL官方的镜像
点进去后 点击到Tags栏目
可以看到这个mysql8.0.25版本的看
在命令行中执行docker pull mysql:8.0.25将镜像从远端拉下来,等待命令执行结束这时候我们本地就有了mysql的镜像文件了
因为我们使用的是docker-compose作为一个容器管理 启动和配置,那么需要编写docker-compose.yaml 这个配置文件,来创建我们需要用到的容器,并且设置相应的配置
首先创建yaml文件,并且创建mysql_conf,mysql_log,mysql_data三个文件夹,分别是配置,日志,数据
下面是目录接口以及yaml文件的内容
docker-compose.yaml
version: "3"
services:
mysql-master:
image: mysql:8.0.25 // 使用的镜像
container_name: mysql-test // 生成容器后的名称
volumes: // 挂载
- ./mysql_conf/master.conf:/etc/my.conf // 挂在本地配置文件到容器内部使用
- ./mysql_data/master:/var/lib/mysql // 挂载数据库存储目录,因为容器每次启动都是会重置,所以需要把文件存本机
- ./mysql_log/master.log:/var/log/mariadb/mariadb.log // 日志文件
ports:
- "3309:3306" // 端口映射,mysql默认3306 将我们本机的3309端口映射到容器的3306端口
environment:
- MYSQL_ROOT_PASSWORD=wx8805780 // 设置root账号默认密码
- TZ=Asia/Shanghai // 设置为上海时区 不设置可能会导致日期相差8个小时
restart: always // 自动重启 总是
networks: // 设置网络组
hczt: // 使用的网络组名称
ipv4_address: 172.21.5.1 // 在网络组中的ip 这里必须网段与设置的一样 后缀ip区分
mysql-slave1:
image: mysql:8.0.25
container_name: mysql-test2
volumes:
- ./mysql_conf/slave1.conf:/etc/my.conf
- ./mysql_data/slave1:/var/lib/mysql
- ./mysql_log/slave1.log:/var/log/mariadb/mariadb.log
ports:
- "3310:3306"
environment:
- MYSQL_ROOT_PASSWORD=wx8805780
- TZ=Asia/Shanghai
restart: always
networks:
hczt:
ipv4_address: 172.21.5.2
networks: // 网络组
hczt: // 设置网络组名称
driver: bridge // 网络模式 桥接模式
ipam:
config:
- subnet: 172.21.0.0/16 // 设置网络组的网段
mysql 配置文件
[mysqld]
## 同一局域网内注意要唯一
server-id=1
## 是否只读,1 代表只读, 0 代表读写
read-only=0
## 忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
# 数据文件夹
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 指定IP
bind 0.0.0.0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
binlog_format=statement
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
文件配置成功后,命令行打开到docker-compose.yaml的根目录下
执行docker-compose up来编译docker-compose.yaml文件创建容器 这样启动的话是命令行直接输出内容,窗口关闭容器就会暂停那么需要开启守护进程在后台运行,执行docker-compose up -d开启守护进程,如果需要修改容器重启 那么执行docker-compose down来关闭容器,如果是修改了文件需要重新生成容器,那么需要将已经生成的容器删除掉,图形化界面中打开
点击删除 将容器删除,这样就可以重新执行命令生成一个新的容器了