mac 使用docker安装mysql,redis, nginx
本文介绍在 Mac 上使用 Docker 和 docker-compose 一键部署 MySQL、Redis 和 Nginx 服务,涵盖镜像加速、数据持久化、容器链接等关键配置。
安装
首先去官网下载,因为国内网络问题,需要配置网络加速,可以使用:
- http://hub-mirror.c.163.com 网易
- https://registry.docker-cn.com 中国区官方
- docker.mirrors.ustc.edu.cn 中国科技大学

{
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
使用compose统一配置mysql、redis镜像
- 在用户目录
~下新建mkdir -p docker/service目录 - 在
service目录下新建文件docker-compose.yml
1 | version: "3" |
docker-compose.yml文件会读取系统环境变量以及当前目录下的.env文件变量
1 | # redis |
运行后会默认生成镜像服务容器名service_mysql_1, service_redis_1
docker-compose常用命令
-
docker-compose up -d [options] [SERVICE…]
该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。
链接的服务都将会被自动启动,除非已经处于运行状态。
-d 以守护进程方式运行 -
docker-compose down
此命令将会停止 up 命令所启动的容器,并移除网络 -
docker-compose restart [options] [SERVICE…]
重启项目中的服务。
安装nginx
-
拉取nginx镜像
docker pull nginx@latest -
查看镜像
docker images -
运行镜像为容器
docker run -d -p 4000:80 --name service_nginx nginx
用4000端口映射80,用service_nginx作为容器名,对应仓库镜像 nginx
-
查看容器
docker ps -a
所有容器,包括未运行
-
以终端的方式进入nginx容器
docker exec -it service_nginx bash
-
复制文件到本地
docker cp service_nginx:/etc/nginx ~/docker/nginx/config/
docker cp service_nginx:/usr/share/nginx/html ~/docker/nginx/
docker cp service_nginx:/var/log/nginx ~/docker/nginx/logs/
-
关闭容器, 重启并挂载文件
docker rm -f service_nginx
docker run --name service_nginx -p 4000:80
-v ~/docker/nginx/config/:/etc/nginx
-v ~/docker/nginx/html:/usr/share/nginx/html
-v ~/docker/nginx/logs:/var/log/nginx
--link service_mysql_1:mysql
-d nginx
--link service_mysql_1:mysql,表示 nginx 容器要连到 service_mysql_1 容器,冒号表示该容器的别名是mysql
问题
修改密码
进入docker exec -it service_mysql_1 bash mysql -u root -p
# 修改普通用户,只改一个就好
SET PASSWORD FOR 'youruser' = PASSWORD('newpwd');
# 修改root用户,改两个
SET PASSWORD FOR 'root' = PASSWORD('newpwd');
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('newpwd');

