如何使用Docker安装Mysql\Reids\Zookeeper

栏目: 数据库 · Mysql · 发布时间: 8年前

内容简介:如何使用Docker安装Mysql\Reids\Zookeeper

最近准备写如何实现分布式锁的文章,实现分布式锁可以借助数据库、缓存和Zoopkpeer实现。在实现代码时就需要安装以上软件。于是就想到使用 docker 来简化我的安装,并可以正好学习一下Docker相关知识,本篇文章就介绍下如何使用Docker安装Mysql/Reids/Zookeeper。

关于docker的安装教程很多,不同的操作系统也不一样,这里不再赘述。如果仅是个人研究和学习,在mac上安装建议大家使用docker for mac安装, https://store.docker.com/editions/community/docker-ce-desktop-mac

Docker基础概念

在使用Docker之前,我们先了解下几个Docker的核心概念

Docker Daemon

Docker引擎,就是运行在后台的一个守护进程,在我们启动它之后,我们就可以通过Docker客户端发送相关Docker的命令。

Docker Images

Docker镜像,这个就类似于我们在安装Windows时的镜像,只不过windows的镜像,在以前我们通常存在光盘上或者U盘里,这里的镜像我们通常会发布到Docker Registry

Docker Containers

Docker容器,在获取到Docker镜像之后,我们可以运行该镜像,此时便会启动一个Docker容器,该容器中运行镜像中的程序。如果把Docker镜像理解为一个类的话,那么Docker容器就是一个实例

Docker Client

Docker客户端,我们安装完Docker之后,我们打开终端使用docker 相关命令进行操作,这些命令便是Docker客户端的命令,另外还有一个基于REST API的Docker客户端,REST API一般用于在开发一些基于Docker运维的系统中使用。

Docker Registry

Docker镜像注册中心,Docker的官网的注册中心为 http://hub.docker.com。我们也可以自己搭建自己的注册中心。

以上是Docker的核心概念,下面我们来看如何使用Docker安装 Redis 、Zookeeper、Mysql,并在过程中,学习使用Docker Client的一些常用命令

Redis

查找镜像

使用以下命令在Docker Hub搜索Redis镜像

docker search redis

执行以上命令,会搜索出所有带redis关键字的镜像(为减少篇幅,仅展示部分结果)

yanyanwangdeMacBook-Pro:~ yanyan.wang$ docker search redis
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                     Redis is an open source key-value store th...   3788      [OK]
bitnami/redis             Bitnami Redis Docker Image                      47                   [OK]
torusware/speedus-redis   Always updated official Redis docker image...   32                   [OK]

其中Name表示镜像仓库的名称,如果不带/则表示Docker官方仓库,带/则表示其他用户公开的镜像。OFFICIAL表示是否为官方仓库,一般我们推荐使用官方的仓库。

拉取镜像

我们使用以下命令拉取,Redis的镜像

docker pull redis:latest

其中redis:latest表示我们下载NAME为redis的镜像,latest表示TAG

在执行完以上命令之后,Docker Client会从Docker镜像注册中心下载Redis的镜像,待下载之后,我们查看本地的镜像

列出所有镜像

我们使用以下命令查看,本地的redis镜像

docker images

执行以上命令,就会显示本地的所有镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              a858478874d1        10 days ago         184 MB

其中IMAGE ID表示镜像ID,具有唯一性

创建并启动容器

使用以下命令,使用Reids镜像,创建并启动Redis容器

docker run -p 6379:6379 -v $PWD/data:/data  -d redis:latest redis-server --appendonly yes

执行以上命令,我们就使用redis:latest镜像创建并启动了一个Redis容器,其中

-p 6379:6379:将容器的6379端口映射成主机的6379端口

-v $PWD/data:/data :将主机中当前目录下的data挂载到容器的/data

redis-server —appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置

查看容器启动情况

使用以下命令查看所有容器

docker ps

执行以上命令,输出如下

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
07f0edc95fb3        redis:latest        "docker-entrypoint..."   2 minutes ago       Up 2 minutes        0.0.0.0:6379->6379/tcp   quirky_davinci

其中Status表示运行状态,Up表示运行中,PORTS表示容器需要对外暴露的端口号

连接、查看容器

我们使用Redis镜像使用redis-cli客户端,连接到redis容器

docker run -it redis:latest redis-cli -h 192.168.0.101

执行以上命令,我们就连接到redis容器,接下来我们就可以使用redis命令进行操作

192.168.0.101:6379> set "testKey" "test"
OK
192.168.0.101:6379> get "testKey"
"test"
192.168.0.101:6379>

至此,我们已经完成了Reids的安装。

Zookeeper

接下来我们安装zookeeper,我们使用和redis相同的方法。直接使用最少的步骤安装,不再做过多解释

查找zookeeper镜像

docker search zookeeper

查找结果如下:

NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jplock/zookeeper               Builds a docker image for Zookeeper versio...   160                  [OK]
zookeeper                      Apache ZooKeeper is an open-source server ...   157       [OK]
mesoscloud/zookeeper           ZooKeeper                                       70                   [OK]
digitalwonderland/zookeeper    Latest Zookeeper - clusterable                  14                   [OK]
springxd/zookeeper             A Docker image that can run a ZooKeeper se...   6                    [OK]

拉取镜像

docker pull zookeeper

创建并启动容器

docker run -p 2181:2181 -v $PWD/data:/data  -d zookeeper:latest

使用zookeeprt镜像创建并启动容器,我们把容器的2181映射到机器的2181上,同样把当前目录的data 挂载到容器的/data

查看当前容器列表

yanyanwangdeMacBook-Pro:zookeeper yanyan.wang$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                        NAMES
44b43e486817        zookeeper:latest    "/docker-entrypoin..."   24 minutes ago      Up 24 minutes       2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp   mystifying_wing
2358c79358d6        redis:latest        "docker-entrypoint..."   About an hour ago   Up About an hour    0.0.0.0:6379->6379/tcp                       fervent_lamarr

进入容器

docker exec -it 44b43e486817 /bin/bash

进入容器之后,ls查看操作目录,可以查看下有哪些目录

bash-4.3# ls
LICENSE.txt                bin                        dist-maven                 lib                        zookeeper-3.4.10.jar.asc
NOTICE.txt                 build.xml                  docs                       recipes                    zookeeper-3.4.10.jar.md5
README.txt                 conf                       ivy.xml                    src                        zookeeper-3.4.10.jar.sha1
README_packaging.txt       contrib                    ivysettings.xml            zookeeper-3.4.10.jar

Mysql

接下来我们安装Mysql,和以上直接从docker注册中心拉取镜像不同。我们首先构建自己的 mysql 镜像,然后在创建并启动容器

构建镜像

编写Dockerfile文件

我们可以使用Dockerfile来快速的构建。Dockerfile实际上就是一种编写Docker镜像的脚本,Dockerfile脚本有固定的格式,通过这些固定的格式,我们可以编写不同需求的Docker镜像。以下是构建Mysql镜像的脚本以及脚本的含义

## 设置基础镜像
FROM mysql:latest

## 设置维护者信息
MAINTAINER yywang <wangyan9110@163.com>

## 设置描述信息
LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest"
## 设置镜像制作过程中,需要执行的命令
RUN apt-get update
RUN apt-get -y install vim
RUN usermod -u 1000 mysql
RUN mkdir -p /var/run/mysqld
RUN chmod -R 777 /var/run/mysqld

其中FROM 表示设置基础镜像指令,该指令有固定的格式,即“仓库名:标签名”,RUN 表示在镜像构建过程中,需要执行的命令。

把以上脚本保存在一个叫Dockerfile的文件下,这时mysql镜像的Dockfile的脚本就完成了。

构建mysql镜像

在Dockerfile文件的同一目录下输入如下命令:

docker build -t yywang/mysql-osx:latest .

其中-t 指定了镜像的名称,. 这一点表示读取当前目录下的Dockerfile文件

查看镜像

在执行完成以上命令后,我们查看当前镜像

yanyanwangdeMacBook-Pro:zookeeper yanyan.wang$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
yywang/mysql-osx    latest              38c6579b6f70        4 minutes ago       446 MB

可以看出yywang/mysql-osx就是我们刚刚构建的镜像

创建并启动容器

创建并启动mysql容器

接下来我们就创建并启动mysql容器

docker run -d -h mysql \
  -v $PWD/mysql:/var/lib/mysql \
  -p 0.0.0.0:3306:3306 --name mysql \
  -e MYSQL_ROOT_PASSWORD=123456 yywang/mysql-osx

其中-e 表示设置mysql的root账户密码为123456

连接、查看容器

我们使用Mysql镜像的mysql客户端,连接到mysql容器

docker run -it yywang/mysql-osx mysql -h192.168.0.101 -uroot -p123456

登录完成后,我们就可以使用mysql的命令操作mysql

mysql> select GET_LOCK("testKey",0);
+-----------------------+
| GET_LOCK("testKey",0) |
+-----------------------+
|                     1 |
+-----------------------+
1 row in set (0.01 sec)

mysql> select RELEASE_LOCK("testKey");
+-------------------------+
| RELEASE_LOCK("testKey") |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

至此Mysql的安装也已经完成。

关注公众号

如何使用Docker安装Mysql\Reids\Zookeeper

关注以上公众号回复 Docker 获取PDF版


以上所述就是小编给大家介绍的《如何使用Docker安装Mysql\Reids\Zookeeper》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Art and Science of CSS

The Art and Science of CSS

Jonathan Snooks、Steve Smith、Jina Bolton、Cameron Adams、David Johnson / SitePoint / March 9, 2007 / $39.95

Want to take your CSS designs to the next level? will show you how to create dozens of CSS-based Website components. You'll discover how to: # Format calendars, menus and table of contents usin......一起来看看 《The Art and Science of CSS》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换