1.购买一个服务器,使用密钥登录
2.ssh远程连接
ssh连接的工具很多,这里推荐用的是xshell
登录成功,开始配置环境。
1、下载docker
yum install docker
2、启动docker服务
service docker start
chkconfig docker on
3、测试是否安装成功
docker version
4、设置国内镜像
vi /etc/docker/daemon.json
#添加后
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
"live-restore": true
}
5、重新启动docker服务
systemctl daemon-reload
service docker restart
6、 检查是否生效
docker info
1、安装中间件
下载地址:
https://github.com/docker/compose/releases/download/1.28.6/docker-compose-Linux-x86_64
2、导入文件
cd /usr/local/bin #打开文件夹
rz #选择本地文件到服务器
3、将可执行权限应用于二进制文件
sudo chmod +x /usr/bin/docker/docker-compose
4、测试是否安装成功
docker-compose --version
拉取docker镜像
docker pull image_name
查看宿主机上的镜像,Docker镜像保存在/var/lib/docker目录下:
docker images
删除镜像
docker rmi docker.io/tomcat:7.0.77-jre7
或者 docker rmi b39c68b7af30
查看当前有哪些容器正在运行
docker ps
查看所有容器
docker ps -a
启动、停止、重启容器命令:
docker start container_name/container_id docker stop container_name/container_id docker restart container_name/container_id
后台启动一个容器后,如果想进入到这个容器,可以使用attach命令:
docker attach container_name/container_id
删除容器的命令:
docker rm container_name/container_id
删除所有停止的容器:
docker rm $(docker ps -a -q)
查看当前系统Docker信息
docker info
从Docker hub上下载某个镜像:
docker pull centos:latest docker pull centos:latest
查找Docker Hub上的nginx镜像
docker search nginx
1、创建挂载目录
#创建挂载目录
mkdir -p /data/mysql/data;
mkdir -p /data/mysql/conf;
2、创建yml文件
vim /data/mysql/docker-compose.yml
#填入配置
version: '3'
services:
mysql:
image: mysql:5.7 #mysql版本
container_name: mysql
volumes:
- /data/mysql/data:/var/lib/mysql
- /data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 123456 #root用户密码
TZ: Asia/Shanghai
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
3、创建配置文件
vim /data/mysql/conf/my.cnf
[mysqld]
default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎
character-set-server=utf8mb4 # 设置mysql服务端默认字符集
pid-file = /var/run/mysqld/mysqld.pid # pid文件所在目录
socket = /var/run/mysqld/mysqld.sock # 用于本地连接的socket套接字
datadir = /var/lib/mysql # 数据文件存放的目录
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # 定义mysql应该支持的sql语法,数据校验等!
# 允许最大连接数
max_connections=200
# 同一局域网内注意要唯一
server-id=3306
# 开启二进制日志功能 & 日志位置存放位置`/var/lib/mysql`
#log-bin=mysql-bin
log-bin=/var/lib/mysql/mysql-bin
# binlog格式
# 1. STATEMENT:基于SQL语句的模式,binlog 数据量小,但是某些语句和函数在复制过程可能导致数据不一致甚至出错;
# 2. MIXED:混合模式,根据语句来选用是 STATEMENT 还是 ROW 模式;
# 3. ROW:基于行的模式,记录的是行的完整变化。安全,但 binlog 会比其他两种模式大很多;
binlog_format=ROW
# FULL:binlog记录每一行的完整变更 MINIMAL:只记录影响后的行
binlog_row_image=FULL
# 日志文件大小
max_binlog_size=100M
# 定义清除过期日志的时间(这里设置为7天)
expire_logs_days=7
# ================= ↑↑↑ mysql主从同步配置end ↑↑↑ =================
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4 # 设置mysql客户端默认字符集
4、启动容器
注意:到对应目录文件下,记得服务器开防火墙
cd /data/mysql
docker-compose up -d
Error:3306端口号被占用
#错误信息
[root@VM-16-2-centos mysql]# docker-compose up -d
Starting mysql ...
Starting mysql ... error
ERROR: for mysql Cannot start service mysql: driver failed programming external connectivity on endpoint mysql (719971d0ba14ce99914053128e9a8e92a268346e7d86eaa07ebcd9b005ea86a1): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: for mysql Cannot start service mysql: driver failed programming external connectivity on endpoint mysql (719971d0ba14ce99914053128e9a8e92a268346e7d86eaa07ebcd9b005ea86a1): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: Encountered errors while bringing up the project.
# 尝试解决手段,杀死占用对应端口进程
[root@VM-16-2-centos mysql]# sudo netstat -apn | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 17082/mysqld
unix 2 [ ] DGRAM 13306 566/dbus-daemon
[root@VM-16-2-centos mysql]# tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 9727/mysqld
-bash: tcp: command not found
[root@VM-16-2-centos mysql]# sudo netstat -apn | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 17082/mysqld
unix 2 [ ] DGRAM 13306 566/dbus-daemon
[root@VM-16-2-centos mysql]# sudo kill -9 17082
[root@VM-16-2-centos mysql]# sudo netstat -apn | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 6369/mysqld
unix 2 [ ] DGRAM 13306 566/dbus-daemon
# 彻底解决手段
#1、查看mysql的进程PID: sudo lsof -i :3306
[root@VM-16-2-centos ~]# sudo lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 6369 mysql 17u IPv6 3392314 0t0 TCP *:mysql (LISTEN)
#2、 杀死进程PID: sudo kill 6369
[root@VM-16-2-centos ~]# sudo kill 6369
#docker-compose加载mysql
[root@VM-16-2-centos mysql]# docker-compose up -d
Starting mysql ... done
[root@VM-16-2-centos mysql]# docker-compose up -d
mysql is up-to-date
[root@VM-16-2-centos mysql]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
275834062b57 mysql:5.7 "docker-entrypoint..." 20 minutes ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
5、navicate测试链接成功
1、创建挂载目录
#创建挂载目录
mkdir -p /data/redis
2、创建yml文件
vim /data/redis/docker-compose.yml
#填入配置
version: '3'
services:
redis:
image: redis:6.2.6
container_name: redis
restart: always
ports:
- 6379:6379
volumes:
- /data/redis/redis.conf:/etc/redis/redis.conf
- /data/redis/data:/data
- /data/redis/logs:/logs
command: ["redis-server","/etc/redis/redis.conf"]
3、创建挂载的配置文件
vim /data/redis/redis.conf
protected-mode no
port 6379
timeout 0
#rdb配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data
appendonly yes
appendfsync everysec
#设置你的redis密码
requirepass 123456
protected-mode no不加,服务连不上redis的
4、启动容器
cd /data/redis
docker-compose up -d
#如果需要强制重新构建
docker-compose up --force-recreate -d
防火墙开端口号 6379
5、AnotherRedis测试连接
注意:开启redis服务