零、前置条件

拉取镜像前,记得先开启 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

docker获取不到镜像 docker 获取镜像_docker

2、拉取镜像

docker pull mysql:tag
# tag 为版本号,不填默认为 latest

选择第一个镜像,由官方发布的 mysql:latest ,

docker获取不到镜像 docker 获取镜像_docker获取不到镜像_02

指定版本号为 5.7 ,

docker获取不到镜像 docker 获取镜像_mysql_03

3、查看镜像

docker images

docker获取不到镜像 docker 获取镜像_容器_04

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

docker获取不到镜像 docker 获取镜像_docker_05

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

docker获取不到镜像 docker 获取镜像_mysql_06

2、拉取镜像 

docker pull redis

docker获取不到镜像 docker 获取镜像_容器_07

3、启动 Redis 并映射本地 6380 端口 

docker run -d --name redis -p 6380:6379 redis

 使用 Redis Desktop Manager 测试连接,可以看到连接成功。

docker获取不到镜像 docker 获取镜像_docker获取不到镜像_08

docker获取不到镜像 docker 获取镜像_容器_09

如果需要修改 Redis 配置,可以通过映射 redis.config 文件实现。 

三、MongoDB

1、搜索镜像

docker search mongo

docker获取不到镜像 docker 获取镜像_docker获取不到镜像_10

2、拉取镜像 

docker pull mongo

docker获取不到镜像 docker 获取镜像_mysql_11

3、启动 mongo 并映射本地端口 27017 

docker run -dit -p 27017:27017 --name mongo -v D:/MongoDB/data:/data/db mongo

4、可视化工具

https://github.com/Studio3T/robomongo

docker获取不到镜像 docker 获取镜像_docker获取不到镜像_12

docker获取不到镜像 docker 获取镜像_运维_13

docker获取不到镜像 docker 获取镜像_mysql_14

docker获取不到镜像 docker 获取镜像_运维_15

5、创建用户

docker获取不到镜像 docker 获取镜像_容器_16

在 System-admin 下右键,选择 Open Shell,输入:

db.createUser({user:'admin',pwd:'123456',roles:[{role:'root',db:'admin'}]});

docker获取不到镜像 docker 获取镜像_docker_17

四、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

docker获取不到镜像 docker 获取镜像_docker_18

 5、访问 rabbitmq

访问本机IP:15672,账号密码默认为 guest

docker获取不到镜像 docker 获取镜像_容器_19

docker获取不到镜像 docker 获取镜像_容器_20