《docker与mysql》

306 阅读5分钟

一. Docker

1. 安装docker toolbox

首先下载docker toolbox,安装完成后有一个docker quickstart,点击运行它,等到看到一个ip就可以退出了

这里我在第一次运行的时候总是出错,因为它在去github下载最新版的boot2docker.io这个文件,因为网络原因就总是出错。经过查找,可以自己去github下载最新版,手动放在一个文件夹内,就可以了。

试验是否安装成功:命令行运行docker -v 可以返回版本号。

而且一定要确保docker run hello-world可以输出Hello form Docker:

参考文章:docker运行mysql,docker入门

2.基本概念

Docker 包括三个基本概念:

  1. 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  2. 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  3. 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

二. mysql

MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。

1. docker 一键安装mysql

搜索 docker mysql进入它的GitHub主页,选择一个版本,比如5.7.33。使用docker run命令启动一个容器。

docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.33

--name 是这个容器的名字,比如取作mysql1

MYSQL_ROOT_PASSWORD=123456 每个mysql都有一个root用户,它的密码

-p 3306:3306 端口号,第一个3306是本机的端口号,第二个是虚拟机的3306端口。映射关系

-d是后台运行服务器

我看有的教程先docker pull拉取远程mysql,再docker run运行目前已在本地的mysql容器。我们这里直接docker run也可以,可以看到首先返回在本地找不到这个镜像,于是就会去自动远程拉取。 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

2. 一些docker命令

docker ps 上边启动了一个容器后,运行这句命令就可以查看容器的运行状态。

docker kill mysql1 关掉这个容器

docker rm mysql1 删掉这个容器

docker contain run mysql1 开启刚关掉的容器

3. 连接mysql

使用docker run启动一个容器后,接下来就要连接到这个容器。

执行 docker exec -it mysql1 bash 它会进入这个容器,该容器里有一个linux系统,可以在这个linux系统里运行mysql了。

上边进入容器后,继续输入 mysql -u root -p -u是user,用户是root,-p输入密码

接下来会让你输入密码,就是123456

在mysql> 后边,就可以输入一些mysql命令操作数据库了。

4. mysql命令

1. 对数据库操作

show databases; 注意一定要加分号。查看所有的数据库。可以看到有四个

use sys; 使用sys这个数据库,分号!可以看到显示数据库已经改变了

drop database yyy 删除某个数据库

2. 对表操作(前提都要先use使用表所在的数据库)

show tables; 查看这个数据库的所有表

select * from version; 查看某个表的内容

drop table xxx; 删除某个表

insert into table_name (name,age) values ('anqi',20); 向表里插入一行数据

delete from table_name where name='anqi'; delete语句删除表内的某条数据,使用where子句,删除name字段是'anqi'的那条数据。

update table_name set name='new',age=100; update语句更新某个表内的某个字段。如果只写name='new' 就会把表里所有行也就是所有用户的name都修改了。要用where子句指定条件 比如update myuser set name='xxx' where age=100; 只把年龄是100的那条数据的name修改

但是最好不要用delete update自己修改表数据

alter命令:删除,添加或修改表的字段

alter table table_name add score int; alter命令+add向表添加一个列字段

alter table myuser drop score; alter+drop 删除表的一个字段

涉及到的命令非常多,比较简单的可以去菜鸟教程查找:mysql菜鸟教程

devdocs.io里的比较详细,这里边的查找postgresql,没有sql

参考文章:docker mysql容器的安装使用

命令行常识:比较熟练的ctrl+c可以中断,比如输错命令了。 crtl+d 可以用于退出上一级。比如我们当前在Mysql里,按一次就会退到linux那个root,再按一次就会退到原本的windows