最近电脑经常关机要关好长时间,老是需要长按电源键强行关机。也不知道是怎么回事。

后来查看关机时的日志,发现是mysql停不掉。这可闹心了!怎么办?上网搜了搜也没有找到什么好的解决办法。总不能每次关机都要长按电源键吧?电脑那么贵,况且还是我自己的电脑,坏了怎么办?

把mysql删掉?作为一个写代码的,电脑里也不能不装mysql啊,天天要用的!装在虚拟机里?这个似乎可行,管你mysql能不能关掉,我把虚拟机停了就行啊。然后看了看自己电脑上装了1年多都没打开过的virtualbox,寻思着装在这里也不合适啊。我电脑硬盘就250G,就为了装个mysql还要给它分个十几G的硬盘,再分给它2G的内存,不合适不合适。那咋弄呢?扣了扣我的鼠标,想起来前1年跟风研究的docker,嗯~,就你了。

开始吧mysql安装进docker

安装docker

docker的命令我是记不住啦~,上网搜了搜安装命令,还是很简单吗。命令一敲刷刷的就好了。(我的电脑装的deepin系统)

wget -qO- https://get.docker.com/ | sh

然后需要给它启动起来,也是一条命令就好啦~

 sudo service docker start

docker运行Ubuntu

docker是安装好了,里面怎样跑一个系统呢?只有docker也没法运行mysql呀!这时候需要下载一个系统镜像,这里用Ubuntu的镜像。首先需要搜索一下有什么镜像可以用下面的命令在市场中搜索镜像。

//命令
sudo docker search ubuntu
//结果
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 9583 [OK]
dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 304 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 217 [OK]
consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 179 [OK]
ubuntu-upstart Upstart is an event-based replacement for th… 98 [OK]
ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 97 [OK]

这里搜到了一堆镜像,我们选排名第一的那个吧。

现在需要把这个镜像下载下来,用下面的命令:

sudo docker pull ubuntu:18.04
//冒号后面的是版本号,不知道的话只能上网查了,不写的话下载的是最新的

但是。网上说由于一些不可抗力,导致国内下载镜像很慢,所以需要添加一个镜像。需要在 /etc/docker 的路径下添加一个文件:daemon.json,里面是镜像地址:

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

之后重启。然后执行上面下载镜像的命令,然后喝点咖啡等一会~~~。

经过下载之后,我们看一下现在电脑里有那些镜像,使用下面的命令:

sudo docker images
//结果
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB  

这里可以看到已经有一个Ubuntu版本是18.04的镜像。现在我们需要启动这个镜像。

//命令
sudo docker run -it -d ubuntu:18.04 /bin/bash
//解释
run : 创建一个新的容器并运行一个命令
-it : 以交互模式运行容器,并重新分配一个伪输入终端,代表-i -t
--name ubuntu18: 为容器指定一个名称
-d : 后台运行容器
ubuntu:18.04 : 镜像名称
/bin/bash : 运行镜像中的程序,没有的话镜像会直接停掉

现在镜像是启动成功了,但是我还要登进去才行呀。这时候需要查看现在有那些容器在运行,执行:

//命令
sudo docker ps -a
//解释
ps : 列出容器
-a : 显示所有的容器,包括未运行的 //结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ce6fa95862c ubuntu:18.04 "/bin/bash" 6 minutes ago Up 6 minutes brave_mendeleev

这里我们可以看到有一个NAME是brave_mendeleev的容器在运行之中。现在我们进入这个容器。执行下面的命令

//命令
sudo docker exec -it brave_mendeleev /bin/bash
//解释
brave_mendeleev: 容器名称
exec : 在运行的容器中执行命令 //结果
hjx@hjx-PC:/etc/docker$ sudo docker exec -it brave_mendeleev /bin/bash
root@1ce6fa95862c:/#

这样我们就成功的登录到这个镜像为ubuntu18.04版本的容器里面了。现在我们就可以在里面安装mysql啦~

ubuntu容器中安装mysql

安装mysql我自己喜欢直接用 apt安装。我在这里直接输入:

apt install mysql-server-5.7

后发现在容器中也是可以安装成功的。安装成功后,我们需要将容器中的mysql端口绑定到自己主机的3306端口上。这里的步骤是:

1:停掉容器(不停掉也行)

//停止容器
sudo docker stop brave_mendeleev
//解释
stop : 容器生命周期管理命令,一共有下面命令构成:
start : 启动容器
stop : 停止容器
restart : 重启容器

2:将安装好mysql的容器提交为一个新的镜像

//命令
sudo docker commit brave_mendeleev ub/mysql
//解释
commit : 从容器创建一个新的镜像
ub/mysql : 新的镜像名称

3:并绑定端口并启动新的镜像

额。。。这里玩崩了。。。没有弄成。/(ㄒoㄒ)/~~
我决定在启动ubuntu镜像的时候就绑定一下3306端口,然后在重新执行上面的操作。 经过漫长的操作。在删除了原有容器,重新绑定3306端口启动,登录容器,安装mysql后,完美的安装并运行成功。 

更简单的方法

恩,直接搜索镜像mysql,然后启动就好了

第一次把mysql装进docker里碰到的各种问题的更多相关文章

  1. Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里

    这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争.最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间.学习吧又不想学习,看电视娱乐吧也 ...

  2. MySQL 到底能不能放到 Docker 里跑?

    https://weibo.com/ttarticle/p/show?id=2309404296528549285581 前言 前几月经常看到有 MySQL 到底能不能放到 Docker 里跑的各种讨 ...

  3. 在服务器的docker里 装anacond3深度学习环境的全流程超基础

    ​ 背景: 实验室给我分配了一个服务器 已经装好了docker 和nvidi docker . 现在我的目标是创建我自己的docker 然后在我自己的docker里装上anaconda环境. 我以前从 ...

  4. 把WinXP装进内存 性能飚升秒杀固态硬盘

    现在用户新配置的电脑,内存很少有小于2GB的,配置4GB内存的朋友也有不少.容量如此大的内存,我们在使用电脑的日常操作中绝对用不完.而目前制约系统性能最大的瓶颈就是硬盘的传输速度,所以,这里教你怎么把 ...

  5. [转帖]Docker里运行Docker docker in docker(dind)

    Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in ...

  6. 把大象装进冰箱的N种方法

    作者:折剑头链接:https://www.zhihu.com/question/49214119/answer/115728034来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  7. mysql 5.7 docker 主从复制架构搭建

    环境版本: MySQL :  5.7.13 Docker : 1.11.2 CentOS : 7.1   1.先在两个物理机上分别安装两个MySQL.命令如下 docker pull mysql:5. ...

  8. 在docker里部署网络服务

    之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...

  9. jenkins和docker 在docker里运行jenkins

    在docker里运行jenkins server. 文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd ...

随机推荐

  1. 牛客网 Wannafly挑战赛3 B.遇见

    遇见 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 65536K,其他语言131072K64bit IO Format: %lld 题目描述 A和B在同一条路上,他们之间的距离为 k ...

  2. require.context

    带表达式的 require 语句 如果你的 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块 ...

  3. [集训队作业2018]蜀道难——TopTree+贪心+树链剖分+链分治+树形DP

    题目链接: [集训队作业2018]蜀道难 题目大意:给出一棵$n$个节点的树,要求给每个点赋一个$1\sim n$之内的权值使所有点的权值是$1\sim n$的一个排列,定义一条边的权值为两端点权值差 ...

  4. cmake 工具使用

    cmake_minimum_required(VERSION 3.5)#cmake版本 project( DisplayImage )#项目名称 find_package( OpenCV REQUIR ...

  5. 6 Java Shell排序

    希尔排序是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序. 1.基本思想 将待排序数组按照步长gap进行分组,然后将 ...

  6. LeetCode 73. 矩阵置零(Set Matrix Zeroes)

    题目描述 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   [1,0,1],   [1,1,1 ...

  7. vue生命周期updated的触发时机之debug过程中发现的firefox问题

    现象描述: 断点位置1 谷歌debug的过程: 火狐debug的过程: 只要在改变数据之后有断点停顿,就会先去执行updated函数 断点位置2 此时火狐和谷歌是一样的效果,但是执行顺序是不一致的 谷 ...

  8. 配置Log4j 详解

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...

  9. js 中文字符串转base64

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. OGG-01877 Missing explicit accessrule for server collector

    OGG-01877 Missing explicit accessrule for server collector Table of Contents 1. OGG-01877 1 OGG-0187 ...