转载地址: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

转载于:https://www.cnblogs.com/huangzelin/p/11320840.html

Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)相关推荐

  1. centos7安装gitlab_Docker常用镜像安装:MySql Redis GitLab maven私服等

    学习Docker的过程就是安装各种镜像.环境搭建的过程.下面是常用Docker公共镜像的安装方式,记录下来,环境收藏~ 一.安装Mysql 1.创建mysql 下载镜像: docker pull ce ...

  2. [转]Docker部署Django由浅入深系列(下): 八步部署Django+Uwsgi+Nginx+MySQL+Redis

    在上篇教程中,我们手动构建了两个容器,一个容器放Django + Uwsgi,另一个容器放Nginx,成功部署了一个简单的Django项目.然而在实际的生产环境中,我们往往需要定义数量庞大的 dock ...

  3. 伍哥原创之安装nginx,mysql,php-fpm,redis

    为什么80%的码农都做不了架构师?>>>    [伍哥原创] v1.0 2012-6-4 初稿 v1.1 2012-6-5 更新,增加php-redis模块的编译安装 [正文] 本文 ...

  4. nginx 怎么重新编译安装mysql,centos 下 编译安装 nginx + mysql + php 服务

    centos 下编译安装nginx + mysql + php 服务 1.安装nginx 1.1.安装依赖包 yum install wget make gcc gcc-c++ pcre-devel ...

  5. docker-compose 部署 php + nginx + mysql + redis

    1,在开动之前首先创建php + nginx + mysql + redis的配置和数据存储路径,大概是下图的样子 // 因为目录全部展开会导致截图不完整,我在这里介绍一下每个目录的功能 mysqlc ...

  6. CentOS 6.5编译安装Nginx+MySQL+PHP

    一.配置防火墙,开启80端口.3306端口,关闭SELINUX [root@Zabbix ~]# vim /etc/sysconfig/iptables -A INPUT -i lo -j ACCEP ...

  7. mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...

    centos5 源码安装Nginx + mysql + apache + php的方法 主要依照的是张宴的一篇博文<http://blog.s135.com/post/366/>,安装的软 ...

  8. centos 6.5 编译php mysql5.6_CentOS 6.5编译安装Nginx+MySQL+PHP

    一.配置防火墙,开启80端口.3306端口,关闭SELINUX[root@Zabbix ~]# vim /etc/sysconfig/iptables -A INPUT -i lo -j ACCEPT ...

  9. nginx mysql 安装_CentOS7下安装Nginx+MySQL教程

    首先我们需要安装nginx的yum源 警告:/var/tmp/rpm-tmp.aRXWtf: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY 准备中...  ...

最新文章

  1. Python一维二维数据的格式化和处理
  2. 字符串分隔 -连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。...
  3. Android调用前置摄像头的方法
  4. PAT刷题 (Java语言)
  5. 5G NR上行控制信道PUCCH
  6. 飞鸽传书10048错误的解决
  7. SQL --几张表公有字段的查询
  8. 二、JS运算符、NaN
  9. TYUT-A专题题解(二)
  10. 多线程之 NSOperation
  11. 香港理工大学ASSIST2011会议(2011-09-30)
  12. Java网课①--->期末考试试卷
  13. [UNR #6]机器人表演
  14. html圆渐变颜色代码,HTML5 canvas createRadialGradient()放射状/圆形渐变(示例代码)
  15. gojs拓扑图实现节点外围圆环按钮
  16. 纺织服装行业通过GRS认证增加产品竞争力
  17. OpenStack unit tests 环境调试
  18. 广告人必看 | 广告素材资源都在这
  19. 想创业不知道做什么好?适合干什么?做什么能赚钱?
  20. html标签ins意思,ins标签是什么意思

热门文章

  1. 快春运了,做个火车余票查询接口,余票来源12306,图是百度地图
  2. 嵌入式工程师该如何选择合适的开发系统
  3. 如果拿到私钥的话,https会被攻击吗?
  4. 不悲不喜(职场版)【转】
  5. 【ORACLE 高可用】作业 :配置ORACLE GoldenGate 2
  6. SQL Server 性能调优(方法论)
  7. android studio自动注释
  8. Android快捷键
  9. android 走马灯效果
  10. Misc(网络+组成原理)