本文教大家如何将常见的应用使用 Docker 进行部署,巩固大家 Docker 命令的学习,下文教大家如何构建属于我们自己的 Docker 镜像。

  

Tomcat

  

  拉取镜像。

docker pull tomcat

  创建容器。

docker run -di --name tomcat -p 8080:8080 tomcat

  进入容器。

docker exec -it tomcat /bin/bash

  查看 webapps 目录下是否有 ROOT 项目,我们熟悉的 Tomcat 猫页面一般就在这个项目中。

  如上图所示,该目录下空空如也,其实 Tomcat 在比较新的版本中将默认的 ROOT 项目放在了 webapps.dist 中,如果你真想访问 http://192.168.10.10:8080/ 看到 Tomcat 猫,将其复制至 webapps 即可。

  访问:http://192.168.10.10:8080/ 即可看到熟悉的面孔。

  

Nginx

  

  拉取镜像。

docker pull nginx

  创建 Nginx 容器。

docker run -di --name nginx -p 80:80 nginx

  将容器内的配置文件拷贝到指定目录(请先提前创建好目录)。

docker cp nginx:/etc/nginx /mydata/docker_nginx

  重命名宿主机 /mydata/docker_nginx/nginx/mydata/docker_nginx/conf

mv /mydata/docker_nginx/nginx/ /mydata/docker_nginx/conf

  终止并删除容器(目录挂载操作只能在创建容器时设置)。

docker stop nginx
docker rm nginx

  创建 Nginx 容器,并将容器中的 /etc/nginx 目录和宿主机的 /mydata/nginx/conf 目录进行挂载。

docker run -di --name nginx -p 80:80 -v /mydata/docker_nginx/conf:/etc/nginx nginx

  访问宿主机:http://192.168.10.10:80/ 结果如下:

  

MySQL

  

  拉取镜像。

docker pull mysql:8.0.21

  创建容器。

docker run -di --name mysql8 -p 3306:3306 -v /mydata/docker_mysql/conf:/etc/mysql/conf.d -v /mydata/docker_mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.21
  • -p:代表端口映射,格式为 宿主机映射端口:容器运行端口。
  • -e:代表添加环境变量 MYSQL_ROOT_PASSWORD 是 root 用户的登陆密码。

  连接容器中的 MySQL 时,只需要连接宿主机的 IP + 指定的映射端口即可。

  也可以进入容器并使用 MySQL 命令打开客户端。

# 进入容器
docker exec -it mysql8 /bin/bash
# 使用 MySQL 命令打开客户端
mysql -uroot -p1234 --default-character-set=utf8

  

Redis

  

  拉取镜像。

docker pull redis

  创建容器。

docker run -di --name redis -p 6379:6379 redis

  连接容器中的 Redis 时,只需要连接宿主机的 IP + 指定的映射端口即可。

  

MongoDB

  

  拉取镜像。

docker pull mongo

  创建容器。

docker run -di --name mongo -p 27017:27017 mongo

  连接容器中的 MongoDB 时,只需要连接宿主机的 IP + 指定的映射端口即可。

  

Elasticsearch

  

  拉取镜像。

docker pull elasticsearch:7.8.1

  创建容器,为了方便演示,修改 ES 启动占用内存大小。

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx512m" -e "discovery.type=single-node" -di --name es -p 9200:9200 -p 9300:9300 -p 5601:5601 -v /mydata/docker_es/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.8.1

  安装中文分词器。

# 进入容器
docker exec -it es /bin/bash
# 安装中文分词器
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.1/elasticsearch-analysis-ik-7.8.1.zip
# 重启 es
docker restart es

  访问:http://192.168.10.10:9200/ 结果如下:

  

安装 head 插件

  

  拉取镜像。

docker pull mobz/elasticsearch-head:5

  创建容器。

docker run -di --name es-head -p 9100:9100 mobz/elasticsearch-head:5

  在浏览器中打开 elasticsearch-head 页面,填入 Elasticsearch 地址。

  这里会出现跨域拒绝访问的问题,进入 elasticsearch 容器内部,修改配置文件 elasticsearch.yml

# 进入容器
docker exec -it 容器ID或名称 /bin/bash
# 修改配置文件
vi config/elasticsearch.yml

  在 elasticsearch.yml 中添加如下内容。

# 跨域请求配置(为了让类似 head 的第三方插件可以请求 es)
http.cors.enabled: true
http.cors.allow-origin: "*"

  重启容器。

docker restart es

  

Solr

  

  拉取镜像。

docker pull solr

  创建容器。

docker run -di --name=solr -p 8983:8983 solr

  访问:http://192.168.10.10:8983/solr/#/ 结果如下:

  

RabbitMQ

  

  拉取镜像。

docker pull rabbitmq

  创建容器。

docker run -di --name rabbitmq -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 rabbitmq

  进入容器并开启管理功能。

# 进入容器
docker exec -it rabbitmq /bin/bash
# 开启 RabbitMQ 管理功能
rabbitmq-plugins enable rabbitmq_management

  访问:http://192.168.10.10:15672/ 使用 guest 登录账号密码,结果如下:

应用部署的练习就到这里,接下来该学习学习如何构建属于我们自己的 Docker 镜像啦。

本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议

大家可以通过 分类 查看更多关于 Docker 的文章。

  

Docker 之常见应用部署的更多相关文章

  1. docker 镜像仓库 Harbor 部署 以及 跨数据复制

    docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...

  2. Docker环境 ELK 快速部署

    Docker环境 ELK快速部署 环境 Centos 7.4 , Docker version 17.12 Docker至少3GB内存: #内核配置 echo ' vm.max_map_count = ...

  3. 使用Docker+Jenkins自动构建部署

    环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...

  4. 【Docker】(3)---linux部署Docker、Docker常用命令

    linux部署Docker.Docker常用命令 本次部署Linux版本:CentOS 7.4 64位. 说明: 因为Docker是基于Linux 64bit的 所以Docker要求64位的系统且内核 ...

  5. Docker 管理工具 Portainer部署

    Docker 管理工具 Portainer部署 一.官网 官网:http://www.portainer.io 演示地址:http://demo.portainer.io 用户名:admin 密码:t ...

  6. docker开源仓库Harbor部署笔记

    Harbor介绍Harbor是Vmvare团队开发的开源企业级registry仓库,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务.项目地址:ht ...

  7. docker - 从安装到部署一个web应用(go、java)

    一:安装docker 1.https://docs.docker.com/engine/installation/binaries/ 下载docker最新版二进制tar.gz linux下: wget ...

  8. Docker swarm结合Openresty部署rabbitmq集群

    Docker swarm结合Openresty部署rabbitmq集群 大家好,年底了,年味儿越来越浓了.2019年的寒冬被定义为未来10年中最好的一年,对于这一说法悲观的人和乐观的人的理解是不一样的 ...

  9. Docker 在容器中部署静态网站

    Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish= ...

随机推荐

  1. JavaScript高级程序设计(第三版) 6/25

    第六章面向对象的程序设计 1.定义只有在内部才用的特性(attribute)时,描述了属性(property)的各种特征.这些特性是为了实现JavaScript引擎用的,因此在JavaScript中不 ...

  2. PHP fputs() 函数

    定义和用法 fputs() 函数将内容写入一个打开的文件中. 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行. 如果函数成功执行,则返回写入的字节数.如果失败,则返回 FAL ...

  3. PHP tempnam() 函数

    定义和用法 tempnam() 函数在指定的目录中创建一个具有唯一文件名的临时文件. 该函数返回新的临时文件名,如果失败则返回 FALSE. 语法 tempnam(dir,prefix) 参数 描述 ...

  4. PHP getName() 函数

    实例 返回 XML 元素及其子元素的名称: <?php$xml=<<<XML高佣联盟 www.cgewang.com<?xml version="1.0&quo ...

  5. 添加entity实体时报错未能找到 EntityFramework.dll

    错误 1 正在编译转换: 未能找到元数据文件“C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\..\IDE\Enti ...

  6. darkbzoj #3759. Hungergame 博弈论 线性基 NIM

    LINK:Hungergame 放上一道简单题 复习一下. 考虑每次可以打开任意多个盒子 如果全打开了 那么就是一个NIM游戏了. 如果发现局面是异或为0的时候此时先手必胜了. 考虑局面不全体异或为0 ...

  7. NOI On Line 提高组题解

    (话说其实我想填的是去年CSP的坑...但是貌似有一道题我还不会写咕咕咕... 先写一下这一次的题解吧. T1:序列.题意省略. 两种操作.这种题要先分析部分分 给出了全部都是2操作的子任务. 发现A ...

  8. Dynamics 365 CRM On premise Unable to Load plug-in assembly

    背景介绍: 本地部署Microsoft Dynamics CRM 9.0正常可用,后打补丁到9.0.16.7,打开系统quote报 “ Unable to Load plug-in assembly” ...

  9. Redis 超详细总结笔记总

    作者 | 王爷科技 来源 | www.toutiao.com/i6713520017595433485 1. Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key ...

  10. Springboot+swagger2.7集成开发

    Springboot+swagger2.7集成开发 本篇文章是介绍最新的springboot和swagger2.7集成开发和2.0稍微有一些出入: Springboot集成环境配置 Swagger2. ...