Docker学习日记(二):启动一个MySql

前言

本来第二章想说说一些基本操作的 后来觉得就是罗列出来一堆随时能用--help看到的东西 有点单调 索性 直接上硬货.
表示docker 的使用还是超简单的

安装篇

  1. 首先用docker搜索mysql的镜像文件 一般情况下 下载和使用stars最多的就好了 肯定靠谱! copy下来准备下载景象的name 准备执行下一步
~ docker search mysql
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                                                  MySQL is a widely used, open-source relation…   7234                [OK]
mariadb                                                MariaDB is a community-developed fork of MyS…   2322                [OK]
mysql/mysql-server                                     Optimized MySQL Server Docker images. Create…   534                                     [OK]
# ....... 省略N多搜索结果
  1. 安装直接执行这个命令即可
~ sudo docker pull mysql
  1. 查看已经安装好的景象,如果看到如下界面的话 证明已经安装成功了
~ docker images
REPOSITORY                                       TAG                 IMAGE ID            CREATED             SIZE
mysql                                            latest              7d83a47ab2d2        10 months ago       408MB

启动篇

运行一个mysql容器

~ sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

上面命令各个参数的含义

run            运行一个容器
--name         后面是这个镜像的名称
-p 3306:3306   表示在这个容器中使用3306端口(第二个)映射到本机的端口号也为3306(第一个)
-d             表示使用守护进程运行,即服务挂在后台

PS: 如果想停掉某个容器 使用Stop 命令即可

# 停止运行mySql容器
~ docker stop mysql
mysql

# 同理 想重新启动的话只需要运行start即可
~ docker start mysql
mysql

使用篇

启动完成之后,使用命令来查看镜像

~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
263e45f1e128        mysql               "docker-entrypoint.s…"   3 weeks ago         Up 1 second         0.0.0.0:3306->3306/tcp   mysql

如果有这个显示就证明成功了

然后使用客户端工具尝试登录就可以了,密码如刚才所示为123456,127.0.0.1为这台机器的ip, 3306为刚才所示的占用本物理机的端口(不是在docker内部的端口)

Sequel Pro 登录界面

双开篇

开始放大招了 大家注意了 这里会讲解一些机制和冲突

官方一下:使用docker相对于虚拟机而言的原因是耗费很少的资源,可以"开辟"非常多的隔离的环境,所以我们继续运行第二个mysql实例,命名为mysql-two

~ docker run --name mysql-two -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

执行即可~ 双开也可以如此简单 Docker确实是神器

只有正确的示例是不完美的 下面增加一些失败情况

这里注意一下 名称和端口一定不能重复否则会出现问题,如果名字冲突 那么会创建失败。如果端口冲突 那么容器依旧会创建 但是无法启动。
下面的错误示例.

# 假如还用之前的镜像名字为mysql。
~ docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker: Error response from daemon: Conflict. The container name "/mysql" is already in use by container "263e45f1e1286393b5579e9a8b963fd2192fee3d3b835343679bbe82d177799a". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

# 假如名字修改了但还用之前的3306端口
~ docker run --name mysql-two -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
252c947bff290fb1bccd8662c8f1e9e3efed0aeb44fb680612ef4e4fb9283a00
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql-two (0a6f9310acea18d94beb47cd601959df2d7bc791f5ab422be0f408954a73e130): Bind for 0.0.0.0:3306 failed: port is already allocated.

如果不小心端口重复了,但是又找不到容器这种尴尬的事情出现了 可以通过下面的方式解决

# 首先使用ps -a 命令查找到所有容器
~ docker ps -a
CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS                      PORTS                    NAMES
252c947bff29        mysql                                             "docker-entrypoint.s…"   12 seconds ago      Created                                              mysql-two
263e45f1e128        mysql                                             "docker-entrypoint.s…"   3 weeks ago         Up 22 minutes               0.0.0.0:3306->3306/tcp   mysql

# Copy 出来NAMES 使用rm命令删除
~ docker rm mysql-two
mysql-two

# 重新查看
~ docker ps -a
CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS                      PORTS                    NAMES
263e45f1e128        mysql                                             "docker-entrypoint.s…"   3 weeks ago         Up 22 minutes               0.0.0.0:3306->3306/tcp   mysql

客户端篇

如果没有客户端软件的话 可以在本地下载MySql客户端

~ sudo brew install mysql-client

下面使用mysql命令访问服务器

mysql -h127.0.0.1 -P3306 -uroot -p123456

访问的结果如下:

mysql> show databases;

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

4 rows in set (0.00 sec)

你可能感兴趣的:(Docker学习日记(二):启动一个MySql)