开发中经常需要安装一些常用的服务软件,如Nginx、MySql、Redis等,如果按照普通的安装方法,一般都相对比较繁琐 —— 要经过下载软件或源码包,编译安装,配置,启动等步骤,使用 Docker 来安装这些服务软件能极大地简化安装过程,且速度也很快。

本文以下操作假定你已经装好了docker,并做好了镜像配置。如果没有,请参考 Docker笔记(三):Docker安装与配置

1. MySql 安装

1.1 下载镜像

~$ docker pull mysql:5.7

1.2 创建挂载目录

~$ mkdir -p apps/mysql/conf apps/mysql/data apps/mysql/logs

如上分别创建了配置文件目录,数据存放目录,以及日志文件目录

1.3 启动容器实例

~$ docker run -d -p : --name mysql -v /home/devuser/apps/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /home/devuser/apps/mysql/logs:/var/log/mysql -v /home/devuser/apps/mysql/data:/var/lib/mysql \
--restart=always -e MYSQL_ROOT_PASSWORD=Passw0rd mysql:5.7

其中

-d:表示在后台运行
-p:宿主机端口与容器端口映射
–name:容器名称
-v:宿主机目录与容器目录映射
–restart=always:除非被docker stop命令明确停止,否则一直尝试重启处于停止态的容器;如果Docker重启,也会自动启动容器
-e:设置环境变量,这里设置了mysql root用户的密码为Passw0rd

如此,MySql服务就跑起来了,很快很简单有木有。

2. Redis 安装

2.1 拉取镜像

~$ docker pull redis:5.0.

2.2 启动容器

~$ docker run -d --name redis -p : -v /home/devuser/apps/redis/data:/data \
--restart=always redis:5.0. redis-server --appendonly yes --requirepass "Passw1rd"

-p, -v 与上同,不赘述
redis-server –appendonly yes : 在容器启动时执行redis-server命令,并打开redis持久化配置
–requirepass:设置密码

2.3 连接

~$ docker exec -it redis redis-cli -h 172.17.0.4 -p  -a Passw1rd
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
172.17.0.4:> keys *
(empty list or set)
172.17.0.4:>

这种方式把密码暴露了,其它登录用户通过history即可看到密码,不是太安全。可改用如下方式,

~$ docker exec -it redis redis-cli
127.0.0.1:>
127.0.0.1:> keys *
(error) NOAUTH Authentication required.
127.0.0.1:> auth 'Passw1rd'
OK
127.0.0.1:> keys *
(empty list or set)
127.0.0.1:>

3. Nginx 安装

3.1 拉取镜像

~$ docker pull nginx

不加标签默认会拉取最新的(latest)镜像

3.2 创建目录

~$ mkdir -p apps/nginx/html apps/nginx/logs apps/nginx/conf

3.3 先不指定映射路径启动一个容器

~$ docker run -d -p : --name nginx nginx
1fdcd13457a6eaacb511878e10d84ffbe48fe63fd1fb3705f58b2d4195b151d8

这里如果直接指定映射路径运行会报错,

~$ docker run -d -p : --name nginx -v ~/apps/nginx/html:/usr/share/nginx/html -v ~/apps/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/apps/nginx/logs:/var/log/nginx nginx
dab56c13f9e76aad37fcf73411c78d495a6466f1c0d214949650dbae44adddf4
docker: Error response from daemon: OCI runtime create failed: container_linux.go:: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/home/devuser/apps/nginx/conf/nginx.conf\\\" to rootfs \\\"/home/docker_image/overlay2/e40ccaf4d845a9af92487b47cbc4d505c5c776800ef8887c5b43833b10661427/merged\\\" at \\\"/home/docker_image/overlay2/e40ccaf4d845a9af92487b47cbc4d505c5c776800ef8887c5b43833b10661427/merged/etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

3.4 将运行容器的配置文件复制到宿主机目录下

~$ docker cp 1fdcd13457a6:/etc/nginx/nginx.conf ~/apps/nginx/conf/

3.5 删除容器并重新运行

~$ docker stop 1fdcd1345
~$ docker rm 1fdcd1345
~$ docker run -d -p : --name nginx -v ~/apps/nginx/html:/usr/share/nginx/html -v ~/apps/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/apps/nginx/logs:/var/log/nginx nginx

3.6 更新配置后重新加载

~$ docker kill -s HUP nginx

类似于 nginx -s reload

4. 总结

本文没有总结。

我的微信公众号:jboost-ksxy (一个不只有技术干货的公众号,欢迎关注)

——————————————————————————————————————

Docker笔记(七):常用服务安装——Nginx、MySql、Redis的更多相关文章

  1. Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)

    转载地址:https://www.cnblogs.com/spec-dog/p/11320513.html 开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的 ...

  2. Linux下的python3,virtualenv,Mysql、nginx、redis等常用服务安装配置

    Linux下的python3,virtualenv,Mysql.nginx.redis等常用服务安装配置   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环 ...

  3. redis常用服务安装部署

    常用服务安装部署   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环境: centos7 + vmware + xshell 即将登场的是: mysql(m ...

  4. 学习笔记(1)centos7 下安装nginx

    学习笔记(1)centos7 下安装nginx 这里我是通过来自nginx.org的nginx软件包进行安装的. 1.首先为centos设置添加nginx的yum存储库 1.通过vi命令创建一个rep ...

  5. mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)

    题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...

  6. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  7. Docker常用命令,Docker安装Nginx、Redis、Jenkins、tomcat、MySQL

    常用命令 拉取镜像:docker pull xxx启动镜像:docker run --name xxx 8080:8080 -d xxx查看容器:docker ps xxx 停止容器:docker s ...

  8. CentOS 6.0最小化编译安装Nginx+MySQL+PHP+Zend

    http://www.osyunwei.com/archives/235.html 引言: 操作系统:CentOS 6.0 32位         下载地址:http://mirrors.163.co ...

  9. centos 6.3 编译安装 nginx +mysql + php

    这篇文章是对另一篇文章的整理,作为记录收藏 1,配置防火墙,开启80端口.3306端口 配置iptables,开启80端口.3306端口 vi /etc/sysconfig/iptables -A I ...

随机推荐

  1. tensorflow 离线使用 fashion_mnist 数据集

    在tensflow中加载 fashion_mnist 数据集时,由于网络原因.可能会长时间加载不到或报错 此时我们可以通过离线的方式加载 1.首先下载数据集:fashion_mnist (下载后解压) ...

  2. 走进python

    python史 1.python之父 Guido van Rossum 2.python的优缺点 优点:开发效率高,可跨平台,可嵌入,可扩展,优雅简洁 缺点:运行稍慢,代码不能加密,不能实现真正的多线 ...

  3. ZOJ 3795:Grouping(缩点+最长路)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5303 题意:有n个人m条边,每条边有一个u,v,代表u的年龄大于等于v,现在要 ...

  4. scrapy基础知识之 Scrapy-Redis分布式策略:

    Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端 ...

  5. TCP UDP (转)

    互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作 ...

  6. 关于爬虫平台的架构实现和框架的选型(二)--scrapy的内部实现以及实时爬虫的实现

    我们接着关于爬虫平台的架构实现和框架的选型(一)继续来讲爬虫框架的架构实现和狂阶的选型. 前面介绍了scrapy的基本操作,下面介绍下scrapy爬虫的内部实现架构如下图 1.Spiders(爬虫): ...

  7. 学习 Python 心得

    脚本式编程: 通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕.当脚本执行完成后,解释器不再有效. 让我们写一个简单的 Python 脚本程序.所有 Python 文件将以 .py 为扩展名.将以 ...

  8. 判断小端大端(C实现)

    C程序中的大端小端概念可以参见上一篇文章 如何区分小端和大端.本文重点讨论如何用C程序来判断当前系统是大端还是小端. 判断大端小端的程序如下: #include <stdio.h> int ...

  9. android_sdcard读写(二)

    接着上篇,继续研究sdcard的神秘之处.上篇代码不变,本篇新增代码都在下面~~~ 继续上代码~~ // 写文件 File path = new File("/mnt/sdcard/sxp/ ...

  10. 【EdgeBoard体验】开箱与上手

    简介 市面上基于嵌入式平台的神经网络加速平台有很多,今天给大家带来是百度大脑出品的EdgeBoard.按照官网文档的介绍,EdgeBoard是基于Xilinx Zynq Ultrascale+ MPS ...