文档章节

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

wangyan9110
 wangyan9110
发布于 2017/05/30 08:54
字数 2020
阅读 1.8K
收藏 91

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

最近准备写如何实现分布式锁的文章,实现分布式锁可以借助数据库、缓存和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 获取PDF版

© 著作权归作者所有

wangyan9110

wangyan9110

粉丝 39
博文 10
码字总数 13360
作品 2
杭州
程序员
私信 提问
加载中

评论(3)

_森屿海巷_
_森屿海巷_
nice
栗色候鸟
:relaxed
栗色候鸟
⬅:bowtie:☺😚
docker 部署disconf 以及将其做成镜像

1、需要一台服务器(阿里云,腾讯云、实体服务器都行,本次是以实体服务器为依照做的) 2、安装docker https://www.cnblogs.com/shijunjie/p/10436293.html 3、开始配置disconf 第一步:环境...

osc_15ajvvu8
2019/03/26
6
0
[奇思异想]使用Zookeeper管理数据库连接串

背景   有一套特定规格的应用(程序+数据库),当有业务需求时,就需要多部署应用,并且所有的应用都使用一个共同的后台来管理。应用新增后,如何通知后台更新连接串成了一个关键的问题。于...

osc_w9s1w4o0
2019/04/08
2
0
Docker 下的Zookeeper以及.ne core 的分布式锁

单节点 1.拉取镜像:docker pull zookeeper 2.运行容器 a.我的容器同一放在/root/docker下面,然后创建相应的目录和文件, mkdir zookeepercd zookeepermkdir datamkdir datalogmkdir confcd...

dz45693
2019/08/16
0
0
群晖DS218+部署kafka

起因是懒 我是个Java程序员,在家写代码时常用到redis、mysql、kafka这些基础服务,通常做法是打开电脑,启动redis、mysql、kafka,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您...

程序员欣宸
04/12
0
0
docker 与 docker-compose区别

docker 与 docker-compose区别 docker简介 docker-compose docker-compose.yml模板 docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发...

张zhic
05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

华为pat地址转换,以及内网web服务器发布

实验名称:华为pat地址转换,以及内网web服务器发布 实验拓扑图: 3. 实验目的 : 1.使内网通过pat转化出去上外网 2.使用静态pat做端口映射,发布web服务器 3.配置交换机远程登录 4. 地址规划 cl...

osc_2ch77h9m
27分钟前
7
0
php优化与模块

缓存 xcache eaccelerator zendopcache pdo_mysql扩展 memcache扩展 memcached扩展 mongo扩展 imagemagick imagick扩展...

osc_tb68dlqx
28分钟前
25
0
ATFX投资者教育活动凸显优势,助力客户有效应对市场波动

ATFX动态:新冠肺炎疫情全球传播期间,各国纷纷颁布“居家令”等措施,要求员工必须待在家里,因此也给各行各业带来了不同程度的影响。为了配合各国颁布的防疫措施,ATFX全球办事处依据各地的...

ATFX
28分钟前
22
0
ospf的工作原理

#谈起ospf(开放式最短路径优先),首先它是一种链路状态路由协议 它的工作过程主要有以下几点 : # 建立邻居表 hello : 仅仅使用hello报文,发现邻居,用于邻居的建立,维护,拆除 ospf 路由仅仅...

osc_4dgu16li
29分钟前
16
0
mysql5.7.20安装

rpm -qa | grep mysql yum -y install make gcc-c++ cmake bison-devel ncurses-devel cd /root wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz m......

osc_pl4ni83h
31分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部