CentOS 安装 Docker
- 使用官方脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- 国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
- 离线安装(未涉及)
- docker地址 可以查找想要的仓库
但是得先注册账号 登录后再打开这个地址
启动Docker & 设置为开机自启
sudo systemctl start docker
sudo systemctl enable docker.service
- 查看docker版本
docker version
Docker 安装 MySql 5.7 如果不写:5.7 则默认拉取最新版本
docker pull mysql:5.7
创建并启动一个MySql 容器
1 | docker run --name mysqlserver -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d --restart=always mysql |
1 | –name:给新创建的容器命名,此处命名为mysqlserver |
###测试安装是否成功
查看docker容器列表
docker ps -a
看上图进入mysql容器
docker exec -it mysqlserver bash
- 开始mysql操作
mysql -uroot -p123456
开启外网访问权限
1 | use mysql |
退出mysql 退出mysql容器 并重启容器服务
1 | exit |
使用远程连接工具尝试连接,注意云服务器安全组配置, 本片文章3307 入网规则放开
挂载数据卷以及配置文件
之所以放在这里, 毕竟是一片学习教程文章. 一开始整太多不容易理解. 首先为什么需要挂载数据卷及配置文件.
如果我们在容器内操作mysql配置不是很方便,再一个如果容器被删除了,那么数据也会丢失. 我们需要把容器内的mysql配置文件和数据挂载到宿主机上
首先在宿主机内创建两个文件夹 习惯在 根目录创建 /mnt
mnt下创建docker文件夹 docker内创建一个mysql mysql下创建 conf和data两个文件夹
一个存放配置文件 一个存放数据
对了 我们忘了去看下mysql容器内配置文件的位置, 虽然默认位置都在/etc/mysql/my.cnf 但是还是要确认下
创建my.conf配置文件
1 | touch /mnt/mysql/my.cnf |
My.cnf添加如下内容:
1 | [mysqld] |
重新创建MySql容器并启动
删除之前的mysql容器
1 | docker run --name mysqlserver \ |
1 | 结合参考之前的 |
这样就可以通过修改宿主机的配置文件修改mysql容器内的数据库配置了,并且如果删除了mysql容器,也可以通过挂载在宿主机的数据卷进行恢复,当然最好别这么操作. 有时间再写一篇容器删除的情况加如果数据恢复和自动备份操作的文章
将本地测试数据库导入到服务器Mysql数据库
获取mysql备份文件
这里有个注意点: 如果提示你密码过于简单 需要重新设置密码时, 你修改mysql密码完成后
alter user user() identified by “123456”;
flush privileges;
会发现远程连接数据库的密码发现没有改变 还是以前的密码, 这是为什么呢. 回头看你之前启动容器的命令
docker run --name mysqlserver -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d --restart=always mysql
因为你指定容器的密码是123456啊
将数据库备份文件传输到服务器 /mnt/temp下
scp art_boot_2020-08-18.sql root@服务器IP:/mnt/temp
在mysql容器内创建一个数据库 zsml
create database zslm default character set utf8mb4 collate utf8mb4_unicode_ci;
备份宿主机的数据到容器内的数据库内 注意是 -i 不需要伪终端
docker exec -i zslm_mysql mysql -uroot -p123456 zslm < /mnt/temp/art_boot_2020-08-18.sql
打包工程 获取Jar包 注意工程数据库配置文件内地址和端口
- 在服务器 mnt目录下创建 docker文件夹
1 | cd /mnt |
编辑Dockerfile文件
1 | # Docker image for springboot file run |
将jar包和dockerfile文件传输到服务器的 /mnt/docker 目录下
1 | scp art-boot.jar root@117.78.60.169:/mnt/temp |
制作镜像
注意:这里要注意 java项目内数据库连接配置那块 不要写localhos 或者 127.0.0.1 因为容器之间网络是隔离的 只能通过暴露的端口联通,所以项目内的ip记得写内网ip, 还有redis那块 否则不能和数据库连通
确保dockerfile和jar包在同一目录下 执行
docker build -t zslm .
查看镜像列表
Docker安装Redis 并启动服务
docker pull redis
docker run --name redis-server -p 6379:6379 -d redis
启动镜像
docker run -d -p 9999:9999 --name zlm_server zslm
Docker 安装 Nginx
docker pull nginx
在/mnt/docker/nginx文件夹下创建挂载目录
mkdir -p /mnt/docker/nginx/{conf,conf.d,html,logs}
在conf.d文件夹内创建配置文件 并修改内容
cd conf
touch nginx.conf
1 | user www-data; |
启动镜像
1 | docker run \ |
docker logs实时查看日志tail
docker logs -f -t --since="2017-05-31" --tail=10 container
- 说明
1 | --since : 指定输出日志开始日期。 |
docker logs -f --until=2s
- 说明:
相对时间(relative):2013-01-02T13:23:37
绝对时间(timestamp):42m for 42 minutes
docker logs [OPTIONS] CONTAINER