零、前置条件
拉取镜像前,记得先开启 docker:
systemctl start docker
systemctl status docker
配置国内源镜像:
vim /etc/docker/daemon.json
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
一、MySQL
1、搜索镜像
docker search mysql
2、拉取镜像
docker pull mysql:tag
# tag 为版本号,不填默认为 latest
选择第一个镜像,由官方发布的 mysql:latest ,
指定版本号为 5.7 ,
3、查看镜像
docker images
4、运行容器
docker run -it -d --name name -p port:port -v path:path -v file:file -e env=value image:tag /bin/bash
参数 | 解析 |
-it | 与容器进行交互式启动 |
-d | 守护式运行 |
--name | 给容器的别名 |
-p | 端口映射,[宿主端口:容器端口] |
-v | 容器挂载点,[挂载的宿主目录或文件:容器目录或文件] |
-e | 给容器的环境变量,[变量名=变量值] |
[image:tag] | 要运行的镜像版本 |
[/bin/bash] | 交互路径 |
docker run -it -d --name mysql8 -p 3307:3306 -v D:/DockerData/mysql8/data:/var/lib/mysql -v D:/DockerData/mysql8/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root mysql:latest /bin/bash
# 运行成功后会返回容器 id
5a6ea00828f0fc5810c455fd54a7bc37009a4c76b9bd8629abd358ea7aee7e9a
5、查看运行中的容器
docker ps
# 容器运行信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a6ea00828f0 mysql:latest "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3307->3306/tcp mysql8
6、登录容器
docker exec -it 容器名称或ID /bin/bash
# 登录 mysql8 容器
docker exec -it mysql8 /bin/bash
遇到问题:
bash-4.4# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
原因:这是由于当使用host参数为“localhost”连接Mysql服务时,会优先使用“sock文件”进行连接,而不是使用“IP:端口”进行连接,而mysql尝试使用“sock文件”进行连接时,却无法获取“sock文件”的位置。
解决:
1、将连接参数“host”的值由“localhost”改成“127.0.0.1”
mysql -uroot -h 127.0.0.1 -p
2、在“/etc/mysql.cnf”中指定“sock文件”位置
# 查看 socket 文件位置
# cat /etc/my.cnf
[mysqld]
socket=/var/run/mysqld/mysqld.sock
# 将容器里的配置文件复制到宿主主机
docker cp mysql8:/etc/my.cnf D:/DockerData/mysql8/
# 修改配置文件
[mysql]
socket=/var/run/mysqld/mysqld.sock
[client]
socket=/var/run/mysqld/mysqld.sock
[mysqldump]
socket=/var/run/mysqld/mysqld.sock
[mysqladmin]
socket=/var/run/mysqld/mysqld.sock
# 将修改后的配置文件复制到容器
docker cp D:/DockerData/mysql8/my.cnf mysql8:/etc/my.cnf
# 重启容器
docker restart mysql8
3、若上面两个方法无效,则重构容器,去掉 -d -it 指令
docker run --name mysql8 -p 3307:3306 -v D:/DockerData/mysql8/my.cnf:/etc/my.cnf:rw -e MYSQL_ROOT_PASSWORD=123456789 mysql:latest
二、Redis
1、搜索镜像
docker search Redis
2、拉取镜像
docker pull redis
3、启动 Redis 并映射本地 6380 端口
docker run -d --name redis -p 6380:6379 redis
使用 Redis Desktop Manager 测试连接,可以看到连接成功。
如果需要修改 Redis 配置,可以通过映射 redis.config 文件实现。
三、MongoDB
1、搜索镜像
docker search mongo
2、拉取镜像
docker pull mongo
3、启动 mongo 并映射本地端口 27017
docker run -dit -p 27017:27017 --name mongo -v D:/MongoDB/data:/data/db mongo
4、可视化工具
https://github.com/Studio3T/robomongo
5、创建用户
在 System-admin 下右键,选择 Open Shell,输入:
db.createUser({user:'admin',pwd:'123456',roles:[{role:'root',db:'admin'}]});
四、RabbitMQ
1、搜索镜像
docker search rabbitmq
2、拉取镜像
docker pull rabbitmq
3、启动容器
# 指定了容器的名称 hostname 并映射了两个端口,一个是 rabbitmq 服务端口,一个是插件端口
docker run -d --hostname testrabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
4、安装插件
# 查看当前运行的容器
docker ps
# 进入容器
docker exec -it rabbit /bin/bash
# 容器内安装插件
rabbitmq-plugins enable rabbitmq_management
5、访问 rabbitmq
访问本机IP:15672,账号密码默认为 guest