Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)
转载地址:https://www.cnblogs.com/spec-dog/p/11320513.html
开发中经常需要安装一些常用的服务软件,如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 3306:3306 --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.5
2.2 启动容器
~$ docker run -d --name redis -p 6379:6379 -v /home/devuser/apps/redis/data:/data \
--restart=always redis:5.0.5 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 6379 -a Passw1rd
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
172.17.0.4:6379> keys *
(empty list or set)
172.17.0.4:6379>
这种方式把密码暴露了,其它登录用户通过history即可看到密码,不是太安全。可改用如下方式,

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

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 80:80 --name nginx nginx
1fdcd13457a6eaacb511878e10d84ffbe48fe63fd1fb3705f58b2d4195b151d8
这里如果直接指定映射路径运行会报错,

~$ docker run -d -p 80:80 --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:345: 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 80:80 --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
Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)的更多相关文章
- Docker笔记(七):常用服务安装——Nginx、MySql、Redis
开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的安装方法,一般都相对比较繁琐 —— 要经过下载软件或源码包,编译安装,配置,启动等步骤,使用 Docker ...
- Linux下的python3,virtualenv,Mysql、nginx、redis等常用服务安装配置
Linux下的python3,virtualenv,Mysql.nginx.redis等常用服务安装配置 学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环 ...
- redis常用服务安装部署
常用服务安装部署 学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环境: centos7 + vmware + xshell 即将登场的是: mysql(m ...
- mac开发环境爬坑记(搭建php+nginx+mysql+redis+laravel+git+phpstorm)
题外话:前几天,终于以原价一半的价格,将我那台15版mbp在bbs上卖了出去.之所以用了“终于”这个词儿,是我一直迟迟没有下定决心卖掉它,可眼瞅着再不卖掉,又要掉价,况且我的新电脑,也终于下来了. 话 ...
- 服务器环境配置安装(mysql+redis+nodejs+nginx)
公司用来测试的服务器挂了,最后重装了系统,需要重新配置程序运行环境,linux上安装不是很熟悉,特此记录一下. 首先获取系统版本信息: 参考:获取Linux系统版本信息 一.mysql 1. 安装 安 ...
- centos下gitlab私服完整安装部署(nginx+MySQL+redis+gitlab-ce+gitlab-shell+)
系统环境cat /etc/redhat-release CentOS release 6.8 (Final) nginx -vnginx version: nginx/1.9.15 redis-cli ...
- 【重要】Nginx模块Lua-Nginx-Module学习笔记(三)Nginx + Lua + Redis 已安装成功(非openresty 方式安装)
源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一. 目标 使用Redis做分布式缓存:使用lua API来访问redis缓存:使用nginx向客户端提 ...
- centos7.4下搭建JDK+Tomcat+Nginx+Mysql+redis+Mongodb+maven+Git+Jenkins
先干两件大事!先干两件大事!先干两件大事! 1.关闭selinux [root@mycentos ~]# vi /etc/selinux/config SELINUX=disabled 2.关闭防火墙 ...
- CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached
声明:部分编译指令在博客编辑器里好像被处理了,如双横线变成单横线了等等,于是在本地生成了一个pdf版本,在下面地址可以下载. LNMP+Memcached CentOS是红帽发行的免费的稳定Linux ...
随机推荐
- centOS禁止普通用户su到root
1.关于su的相关权限涉及到两个文件,分别为/etc/pam.d/su和/etc/login.defs两个配置文件. 2.禁止普通用户su到root,配置如下: 去除/etc/pam.d/su文件中如 ...
- 【题解】Informacije [COCI2012]
[题解]Informacije [COCI2012] 传送门:官方题面 [题目描述] 有一个长度为 \(n\) 的 序列 \(a\)(由 \([1,n]\) 中的数组成,且每个数只会出现一次),现给出 ...
- 前端开发JS——引用类型
10.流程控制语句 注:var obj = {}:这里的obj转换boolean语句为true if语句和java是一样的,判断条件也是根据上篇博客提到的假性值 // 弹出一个带输入框的 ...
- 扫描不同域下的AD账户进行删除
public ResultModel GetEntryOneToDel(string sAMAccountName) { bool del=false; ResultModel result = ne ...
- 达能依靠Matrikon进行数据存储和分析
达能是一家致力于通过食品实现健康的公司,业务遍及五大洲130多个国家.在罗马尼亚,达能每天在布加勒斯特的工厂生产100万瓶酸奶.由于质量和产品安全在达能最为重要,因此监控和分析工业过程需要非常高效才能 ...
- libtool编译
1.充分利用共享库的能力.libtool 是一个通用库支持脚本 2.我们可以认为libtool是gcc的一个抽象,也就是说,它包装了gcc或者其他的任何编译器,用户无需知道细节,只要告诉libtool ...
- Object_C 集成环信时,中文环境下不显示中文
因为本app只有中文,没有做中英文判断,但是环信是默认英文环境的,所以,此时,需要在info.plist 文件中修改它的语言环境.如下
- 第1篇Scrum冲刺博客
目录 第1篇Scrum冲刺博客 各个成员在 Alpha 阶段认领的任务 各个成员的任务安排 整个项目预期的任务量 敏捷开发前的感想 团队期望 第1篇Scrum冲刺博客 各个成员在 Alpha 阶段认领 ...
- es6中,promise使用过程的小总结
参考资料传送门:戳一戳 1.是什么 Promise是异步编程的一种解决方案,有三种状态:pending(进行中).fulfilled(已成功)和rejected(已失败); 一般成功了状态用resol ...
- 常用邮箱SMTP服务器地址大全
常用邮箱SMTP服务器地址大全 阿里云邮箱(mail.aliyun.com) POP3服务器地址:pop3.aliyun.com(SSL加密端口:995:非加密端口:110) SMTP服务器地址:sm ...