当前位置: 首页 > news >正文

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

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 文件实现。 

相关文章:

  • Android 12 蓝牙打开
  • Linux常用基本命令详解(一)
  • 逻辑漏洞——业务逻辑问题
  • C++-vector的代码实现(超详细)
  • Linux之Platform设备驱动
  • Linux 入门篇
  • Linux驱动开发:字符设备驱动开发实战
  • 一、k8s的安装部署
  • VB.net:VB.net编程语言学习之ADO.net基本名称空间与类的简介、案例应用(实现与SQL数据库编程案例)之详细攻略
  • [iOS开发]事件处理与响应者链
  • 【CSDN线上竞赛第六期竞赛 】参赛介绍
  • 各种场景下的Git管理方法
  • 逻辑漏洞——权限控制问题
  • golang常用库之-配置文件解析 spf13/viper包 | 解析加载配置
  • Rust(7):结构体类型
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Docker下部署自己的LNMP工作环境
  • ECMAScript入门(七)--Module语法
  • ES2017异步函数现已正式可用
  • JAVA 学习IO流
  • JavaScript服务器推送技术之 WebSocket
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • spring-boot List转Page
  • Tornado学习笔记(1)
  • 闭包,sync使用细节
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 反思总结然后整装待发
  • 分布式事物理论与实践
  • 记录:CentOS7.2配置LNMP环境记录
  • 山寨一个 Promise
  • 使用 QuickBI 搭建酷炫可视化分析
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 用Canvas画一棵二叉树
  • hi-nginx-1.3.4编译安装
  • ​iOS实时查看App运行日志
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​什么是bug?bug的源头在哪里?
  • #mysql 8.0 踩坑日记
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (动态规划)5. 最长回文子串 java解决
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (一)认识微服务
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)四层和七层负载均衡的区别
  • (转)我也是一只IT小小鸟
  • .Net IOC框架入门之一 Unity
  • .net mvc 获取url中controller和action
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .Net7 环境安装配置