前言
本来第二章想说说一些基本操作的 后来觉得就是罗列出来一堆随时能用--help看到的东西 有点单调 索性 直接上硬货.
表示docker 的使用还是超简单的
安装篇
- 首先用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多搜索结果
- 安装直接执行这个命令即可
~ sudo docker pull mysql
- 查看已经安装好的景象,如果看到如下界面的话 证明已经安装成功了
~ 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)
网友评论