Docker安装常用软件

978 阅读6分钟

Portainer

Portainer 是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。

  • 拉取镜像

    docker pull portainer/portainer
    
  • 查看并运行镜像

    docker images  
    docker run -d -p 9000:9000 --name=myportainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
    

命令说明 :
-p 端口映射,格式为:主机(宿主)端口:容器端口;
-v: 将指定目录挂载到容器里;
--restart=always: 重启docker时,自动启动容器。

image.png

  • 访问(ip+端口号)

初次登录需要设置用户名和密码。

image.png

  • 选择local即可,选择完毕,点击Connect可连接到docker:

image.png

  • 可对本地的镜像、容器等进行管理。 image.png

Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

  • 从 Docker Hub 上查找镜像

    docker search  tomcat
    

    image-20211210152045112

  • 拉取镜像

    docker pull tomcat
    
  • 查看镜像

    docker images 
    

    image-20211210152147938

  • 运行镜像

    docker run -d -it -p 8080:8080 --name mytomcat  tomcat
    

    image-20211210153240558

    命令说明:
    -i : 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
    -t: 分配一个伪tty,一般与 -i 连用。
    -d: 后台程序运行。

  • 正常启动访问404问题

    image.png

问题分析:1.确认服务器安全组的端口开放; 2 进入容器查看webapps文件是否为空。

  • 进入容器并查看文件目录
docker exec -it 容器Id或名字 /bin/bash
ls  -l

image.png

  • 处理方法二选一
    ① 删除webapps,把webapps.dist改名为webapps
rm -rf webapps 
mv webapps.dist webapps

② 将webapps.dist文件复制到webapps里

cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps/
  • 再次访问

image.png

Nginx

Nginx 是一个高性能的HTTP反向代理web服务器。

  • 拉取镜像
docker pull nginx

image.png

  • 查看镜像
docker images

image.png

  • 创建容器
docker run --name nginx-test -p 8081:80 -d nginx

命令说明:
--name nginx-test:容器名称。
-p 8081:80:端口进行映射,将本地 8081 端口映射到容器内部的 80 端口。
-d nginx:设置容器在在后台一直运行。

  • 访问测试

image.png

Redis

Redis 是一个高性能的key-value数据库。

  • 拉取镜像
docker pull redis #不指定版本,则默认拉取最新latest版本。
  • 创建文件
mkidr - p /root/docker/redis/conf
touch /root/docker/redis/conf/redis.conf
  • 编辑redis.conf
#bind 127.0.0.1 //允许远程连接
protected-mode no 
requirepass 123456 //密码
  • 运行镜像
docker run -d  -p 6379:6379 -v /root/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /root/docker/redis/data:/data --name myredis 87856cc39862 
redis-server /usr/local/etc/redis/redis.conf --appendonly yes

image.png

命令说明:
-v: 将指定目录文件挂载到容器里
redis-server: 通过指定配置文件启动redis
--appendonly yes: 开启AOF Redis的持久化存储提供两种方式:RDB与AOF。RDB是默认配置,AOF需要手动开启。

  • 测试连接

image.png

MongoDB

MongoDB 是一个基于分布式文件存储的数据库。

  • 拉取镜像
docker pull mongo

image.png

  • 查看镜像
docker images

image.png

  • 创建容器
docker run -itd --name mongo -p 27017:27017 mongo

参数说明: -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务

  • 访问

可视化工具:NavicatMongoDB Compass

image.png

Mysql

MySQL 是流行的关系型数据库管理系统。

  • 查找镜像
docker search mysql

image.png

  • 拉取镜像
docker pull mysql

image.png

  • 创建容器
docker run -p 12345:3306 --name mysql-test -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

命令说明:
-p: 12345:3306:将主机的12345端口映射到docker容器的3306端口。
--name mysql-test:运行服务名字。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d mysql : 后台程序运行mysql。
-v /root/mysql/conf:/etc/mysql/conf.d :将主机/root/mysql/录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d
-v /root/mysql/logs:/logs:将主机/root/mysql目录下的 logs 目录挂载到容器的 /logs。
-v /root/mysql/data:/var/lib/mysql 将主机 /root/mysql 目录下的data目录挂载到容器的/var/lib/mysql

  • 连接测试

这里使用免费的数据库连接工具DBeaver

将allowPublicKeyRetrieval设置为true; image.png

输入ip和端口、用户密码,测试连接成功。 image.png

PostgreSQL

PostgreSQL 是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理。

  • 搜索镜像
docker search postgres

image.png

  • 拉取镜像
docker pull postgres:13.2
  • 查看镜像并创建容器
docker images
docker run --name my_postgres -v /home/pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -p 54321:5432 -d postgres:13.2
  • 测试连接 image.png
  • 添加postgis扩展 方法1.在已有postgres镜像,手动添加扩展。
    ① 进入容器
docker exec -it my_postgres /bin/bash

② 升级apt-get

apt-get update

③ 安装postgis

apt-get install postgresql-13-postgis-3 postgresql-13-postgis-3-dbgsym postgresql-13-postgis-3-scripts

④ 启用postgis

create extension postgis

方法2.下载带postgis扩展的镜像。(推荐)
① 拉取镜像

docker pull  mdillon/postgis

② 创建容器

docker run --name postgres -e ALLOW_IP_RANGE=0.0.0.0/0 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=123456  -e POSTGRES_MULTIPLE_EXTENSIONS=postgis  -v /home/pgdata:/var/lib/postgresql/ -p 54321:5432 -d  mdillon/postgis

命令说明:
-e POSTGRES_PASSWORD=123456: 设置数据库的登录密码为123456
-e POSTGRES_MULTIPLE_EXTENSIONS='postgis': 开启postgis扩展
-p 54321:5432: 将容器的5432端口映射到外部机器的54321端口
-e ALLOW_IP_RANGE=0.0.0.0/0: 表示允许所有ip访问
-v /home/pgdata:/var/lib/postgresql/: 数据持久化 把数据挂载到宿主机的home/pgdata下

  • 测试postgis扩展
SELECT ST_SetSRID(ST_Point(-87.71,43.741),4326),ST_GeomFromText('POINT(-87.71 43.741)',4326)

image.png

Nacos

Nacos 是一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • 搜索镜像
docker search nacos
  • 拉取镜像
docker pull nacos/nacos-server
  • 启动nacos容器
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

命令说明:--env MODE=standalone: 单机启动

  • 测试登录(用户名:nacos,密码:nacos) image.png

RabbitMQ

RabbitMQ 是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个AMQP的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。

  • 查找镜像
docker search rabbitmq

image.png

  • 拉取镜像
docker pull rabbitmq

image.png

  • 查看本地镜像
docker images

image.png

  • 创建容器
docker run -d --name my-rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq

命令说明:
-d: 后台运行容器。
--name my-rabbitmq: 指定容器名为my-rabbitmq 。
-p 5672:5672 -p 15672:15672: 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号)
-v: 映射目录或文件
--hostname: 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名)。
-e: 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

  • web端管理(IP:15672)

image.png

  • 访问失败解决
  1. 进入容器
docker exec -it 2b092b23ee2c /bin/bash

image.png
2.开启web界面管理插件

rabbitmq-plugins enable rabbitmq_management