Docker 镜像拉取

零、前置条件

拉取镜像前,记得先开启 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 镜像拉取_第1张图片

2、拉取镜像

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

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

Docker 镜像拉取_第2张图片

指定版本号为 5.7 ,

Docker 镜像拉取_第3张图片

3、查看镜像

docker images

Docker 镜像拉取_第4张图片

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

Docker 镜像拉取_第5张图片

2、拉取镜像 

docker pull redis

Docker 镜像拉取_第6张图片

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

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

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

Docker 镜像拉取_第7张图片

Docker 镜像拉取_第8张图片

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

三、MongoDB

1、搜索镜像

docker search mongo

Docker 镜像拉取_第9张图片

2、拉取镜像 

docker pull mongo

Docker 镜像拉取_第10张图片

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 镜像拉取_第11张图片

Docker 镜像拉取_第12张图片

Docker 镜像拉取_第13张图片

Docker 镜像拉取_第14张图片

5、创建用户

Docker 镜像拉取_第15张图片

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

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

Docker 镜像拉取_第16张图片

四、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 镜像拉取_第17张图片

 5、访问 rabbitmq

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

Docker 镜像拉取_第18张图片

Docker 镜像拉取_第19张图片 

 

你可能感兴趣的:(Docker学习,docker,容器,运维)