Docker入门到实践(七)Docker常用软件的安装

2,032 阅读4分钟

Docker 入门到实践系列文章列表:

Docker 入门到实践 (一) docker 简介与安装
Docker 入门到实践 (二) docker 常用命令讲解
Docker 入门到实践 (三) Dockerfile 解析与镜像制作
Docker 入门到实践 (四) docker 容器数据卷与数据卷容器
Docker 入门到实践 (五) docker 数据的备份、恢复与迁移
Docker 入门到实践 (六) docker 网络模式详解以及容器间的网络通信
Docker 入门到实践 (七) docker 常用软件的安装
Docker 入门到实践 (八) 本地镜像推送到阿里云 和 下载镜像到本地
Docker 入门到实践 (九) docker 可视化界面 portainer 的安装与使用
Docker 入门到实践 (十) IDEA 集成 Docker 构建容器镜像,部署项目
Docker 入门到实践 (十一) docker 私有仓库的搭建与配置
Docker 入门到实践 (十二) docker compose 简介与安装
Docker 入门到实践 (十三) docker compose 配置文件与常用命令讲解
Docker 入门到实践 (十四) docker 企业级容器镜像仓库 HarBor 的搭建与配置

一、前言

  在上一篇文章中已经介绍了 docker 网络模式详解以及容器间的网络通信, 下面正式进入到 docker 常用软件的安装讲解。

二、docker 常用软件的安装

1、docker 安装 Tomcat

//1、拉取tomcat镜像,这里以tomcat:latest为例
docker pull tomcat

//2、后台运行tomcat镜像
docker run -d -p 8080:8080 --name=mytomcat -v $(pwd)/webapps:/usr/local/tomcat/webapps -v $(pwd)/logs:/usr/local/tomcat/logs tomcat

//注意:如果出现Docker挂载宿主机目录显示cannot open directory .:Permission denied
解决办法:在挂载目录后面 多加一个--privileged=true参数即可

-d:表示后台运行容器
-p:指定端口映射,第一个 8080 表示对外暴露的端口 (即:应用服务端口),第二个 8080 表示 tomcat 容器端口
--name:指定容器名称
-v $(pwd)/webapps:/usr/local/tomcat/webapps:将宿主机当前目录下的 webapps 目录 映射到 tomcat 容器的应用配置程序目录,注意:这样映射会导致 tomcat 的 / webapps 目录下的文件或目录全部被清空,如果不想这样,可以映射到 tomcat 的 / webapps 目录下的自定义文件夹,如:/usr/local/tomcat/webapps/web
-v $(pwd)/logs:/usr/local/tomcat/logs:将宿主机当前目录下的 logs 目录 映射到 tomcat 容器的日志目录

2、docker 安装 Mysql

//1、拉取mysql镜像,这里以mysql:5.6为例
docker pull mysql:5.6

//2、后台运行mysql:5.6镜像
docker run -d -p 3306:3306 --name=new_mysql -v $(pwd)/conf:/etc/mysql/conf.d -v $(pwd)/logs:/logs -v $(pwd)/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

//注意:如果出现Docker挂载宿主机目录显示cannot open directory .:Permission denied
解决办法:在挂载目录后面 多加一个--privileged=true参数即可

-d:表示后台运行容器
-p:指定端口映射,第一个 3306 表示对外暴露的端口 (即:应用服务端口),第二个 3306 表示 mysql 容器端口
--name:指定容器名称
-v $(pwd)/conf:/etc/mysql/conf.d:将宿主机当前目录下的 webapps 目录 映射到 mysql 容器的应用配置程序目录,注意:/conf.d是一个目录,不是文件
-v $(pwd)/logs:/logs:将宿主机当前目录下的 logs 目录 映射到 mysql 容器的日志目录
-v $(pwd)/data:/var/lib/mysql:将宿主机当前目录下的 data 目录 映射到 mysql 容器的数据存储目录
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码

3、docker 安装 Redis

//1、拉取redis镜像,这里以redis:3.2为例
docker pull redis:3.2

//2、后台运行redis:3.2镜像
docker run -d -p 6379:6379 --name=myredis -v $(pwd)/data:/data -v $(pwd)/redis.conf:/usr/local/etc/redis/redis.conf redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

//3、在$(pwd)/redis.conf目录下,创建一个redis.conf配置文件
redis.conf配置文件下载  https://pan.baidu.com/s/1OG_DezTtDYm5mt0JmKJWFg

redis.conf配置文件需要修改四处地方:
1、注释掉bind 127.0.0.1,即#bind 127.0.0.1,这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了
2、把protected-mode属性设置成no (默认是yes, 禁止了远程访问)
3、把daemonize属性设置成yes (表明需要在后台运行)
4、找到# requirepass foobared,删除前面的注释符号#,并把foobared修改成自己的密码  或者  另起一行 requirepass 自己的密码

//注意:如果出现Docker挂载宿主机目录显示cannot open directory .:Permission denied
解决办法:在挂载目录后面 多加一个--privileged=true参数即可

-d:表示后台运行容器
-p:指定端口映射,第一个 6379 表示对外暴露的端口 (即:应用服务端口),第二个 6379 表示 mysql 容器端口
--name:指定容器名称
--v $(pwd)/data:/data:将宿主机当前目录下的 data 目录 映射到 redis 容器的数据存储目录
-v $(pwd)/redis.conf:/usr/local/etc/redis/redis.conf:将宿主机当前目录下的 redis.conf 目录 映射到 redis 容器的配置目录,注意:/redis.conf是一个目录,不是文件
redis-server /usr/local/etc/redis/redis.conf --appendonly yes:在容器中执行 redis-server 启动命令,并以/usr/local/etc/redis/redis.conf路径下的配置文件启动 redis,同时--appendonly yes开启持久化配置 (AOF)



4、docker 安装 RabbitMQ

/**
 *拉取RabbitMQ镜像,这里以rabbitmq:3-management为例
 *拉取RabbitMQ镜像的时候,选择带有"management"版本的,不要选择latest版本的,因为带有"management"版本的才带有管理界面。
 **/
docker pull rabbitmq:3-management

//2、后台运行rabbitmq:3-management镜像
docker run -d --name=rabbitmq -p 5672:5672 -p 15672:15672 --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3-management

或者

//此方式的默认账号密码为:guest:guest,默认虚拟机为:/
docker run -d --name=rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management



5、docker 安装 Nginx

//1、拉取nginx镜像,这里以nginx:latest为例
docker pull nginx

//2、后台运行redis:3.2镜像
docker run -d -p 80:80 --name=mynginx nginx

//注意:如果出现Docker挂载宿主机目录显示cannot open directory .:Permission denied
解决办法:在挂载目录后面 多加一个--privileged=true参数即可

-d:表示后台运行容器
-p:指定端口映射,第一个 80 表示对外暴露的端口 (即:应用服务端口),第二个 80 表示 mysql 容器端口
--name:指定容器名称

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net