Docker Step by Step(二) 使用Docker快速部署Mysql

DockerHub

    hub.docker.com有点像GitHub.com,github是所有程序的集合,github里面你可以创建你自己的代码仓库,搜索整个代码仓下载其他人的代码。而dockerhub是docker官方提供的一个镜像平台,你可以在此找到你需要的镜像,比如mysql、tomcat、nginx等,其中包括官方发布的镜像,以及各种非官方镜像,以及经过docker认证的第三方镜像,质量高的镜像都包括了安装使用说明,每个镜像都有显示下载人数,你也可以根据每个镜像下载的次数判断这个镜像的制作质量。
 
到hub.docker.com上搜索mysql
 
 
我们直接转到Docker官方Mysql镜像的下载页
右侧黑框中是拉取镜像的命令,复制后直接可以使用。
底下Description是说明信息,Reviews中有对此镜像的评论
 
页面下方Tags中说明了都有哪些版本的镜像以及拉去命令。
默认拉取最新的镜像:docker pull mysql
拉去mysql8.0镜像:docker pull mysql:8.0
拉去mysql5.7镜像:docker pull mysql:5.7
 

加速你的镜像下载

       dockerhub虽好,但是对于国内用户可能存在一个问题,你在dockerhub上面找到合适的镜像,使用docker命令本地下载时默认访问的是
docker官方的服务节点,网速会比较慢,这个和我们安装docker时官方源速度慢是同类问题,我们需要改用国内的docker镜像节点。
此时需要修改配置文件(若没有就在此位置创建一个)  /etc/docker/daemon.json
内容改为:(网易的镜像地址)
{
  "registry-mirrors": [" https://hub-mirror.c.163.com"]
 
或者:(daocloud的镜像地址)
{
  "registry-mirrors": [" http://f1361db2.m.daocloud.io"]
}
 
或者:(阿里云的镜像地址)
{
  "registry-mirrors": [" https://opljue1q.mirror.aliyuncs.com"]
}
 
以上三个任何一个即可。
 
配置完国内镜像,重启一下docker:sudo systemctl restart docker
这时你在本地执行 docker pull mysql:5.7 是从你上面配置的源,即过内镜像拉取的数据。
 
比如我们要拉取mysql的5.7版本,执行:
sudo docker pull mysql:5.7
 
将mysql5.7镜像拉取到本地docker,拉取完成后,执行
sudo docker images 列表当前镜像
 

使用命令行搜索

除了在dockerhub上面搜索镜像,获取镜像信息,如果不想打开dockerhub网站,还可以使用命令行docker search 搜索可用镜像
以下是直接用docker search mysql搜索mysql相关镜像,结果中包括NAME镜像名称,STARS星标数(靠谱等级),OFFICIAL官方镜像标记,下载拉取镜像。
 
 

镜像基本操作

docker镜像是要占用空间的,如果要删除镜像,命令格式:
sudo docker image rm 镜像名:tag 
比如要删除上面的镜像:ssudo docker image rm mysql:5.7
也可以直接用命令格式:sudo docker rmi imageid ,如:sudo docker rmi a4fdfd462add
即按照imageid进行删除,imageid使用sudo docker images可以看到。
 

启动容器

镜像下载好后只是静态资源,下一步就是根据镜像来启动容器。 (插入一个docker从镜像成为容器的插图)
如下图,通过带参数的docker run命令将你的mysql docker镜像运行为docker容器,并且理论上单个镜像可以运行多个不同的容器,只是他们的容器名称及ID不同,但是都源于一个镜像。
这里我们只运行一个。
 
启动容器docker run命令
sudo docker run --name mysql5.7 -p 13386:3306 -e MYSQL\_ROOT\_PASSWORD=123yes -d mysql:5.7
以上—name指定容器名称
-p指定映射的端口号,对外113386,docker容器内部3306
-e指定环境变量,这里是设置mysql的root密码,关于MYSQL\_ROOT\_PASSWORD的来历见官方文档 https://hub.docker.com/_/mysql 的 Environment Variables部分
-d是设定用来启动为容器的镜像名称,即上面镜像的repository:tag
注:使用官方镜像一定要注意参考官方镜像的文档,一般都有比较详细的使用说明文档。
 
mysql容器运行后,正如下图所示,对外端口是13386,远程电脑可以像登录一般mysql服务一样用mysq客户端登录访问,3306端口对于容器外部,包括容器宿主机是隐藏的。
 
关于docker run命令的更多参考:
或者执行sudo docker run —help
 
查看容器信息
用以下命令列表已经启动的容器
列表已启动的容器
sudo docker  ps 
另外加一个-a参数,列表所有容器(包括已经停止的、以及没启动成功的)
sudo docker ps -a
 
尝试用客户端连接位于docker容器中的mysql服务
命令行连接:
你可以在远程机器上,或者安装docker的宿主机上,用命令连接docker中的mysql:
如果是在宿主机登录容器中的mysql,对于宿主机相当于访问一个13386端口的本地mysql服务,并没有什么不同。
以下是在宿主机安装mysql客户端(上图的宿主机ubuntu)
sudo apt-get install mysql-client-core-8.0
本地命令行连接mysql (注意此处不能用localhost而要用127.0.0.1)
mysql -h127.0.0.1 -P13386 -uroot -p123yes
 
当然命令也可以在客户端远程链接,把127.0.0.1改为远程docker宿主机的地址或名称即可,
如在我的这台安装docker的宿主机(其实是个虚拟机上的ubuntu)的hostname是 vbox.ubuntu.com(上图的宿主机ubuntu的hostname),在远程机器上面可以用此命令登录mysql:sudo mysql - hvbox.ubuntu.com -P13386 -uroot -p123yes
注:以上需要远程机器上面hosts文件加上vbox.ubuntu.com的ip地址域名映射。
 
远程客户端链接
最终使用肯定还是要用图形化客户端,比如mysql workbench这样的客户端,配置链接就可以了。
 
注:这是学习环境,正规使用,不建议开通远程root直接连。
 
如果远程客户端连接mysql有问题,可以先在远程客户端telnet docker宿主机:13386 测试端口是否能正常访问
 
用mysql workbench登录成功后,就像使用传统安装方式安装的mysql一样了去使用了。
 
启停容器命令:
停止容器:
docker stop 容器ID/容器名称
sudo docker stop mysql5.7
停止后,用docker ps -a 查看,可以看到STATU显示了容器的状态Exited
 
重启容器
docker start 容器ID/容器名称
sudo docker start 2c2b84eee83e
 
在容器内操作:
可以使用docker exec -it ,进入正在运行的容器,如上面的mysql5.7容器
sudo docker exec -it mysql5.7b /bin/bash
说明:mysql5.7是容器名称,你也可以 使用容器的id
/bin/bash 是指定容器后内的命令解释方式,也可以用/bin/sh ,最直观的是命令提示符显示会不同。
 
退出容器使用exit;即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值