简易微服务全环境Docker部署

全环境Docker部署

安装docker

使用官方安装脚本自动安装

安装命令如下:

复制curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

手动安装

卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

sudo yum remove docker \
	docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

安装 Docker Engine-Community

使用 Docker 仓库进行安装

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

使用以下命令来设置稳定的仓库。

使用官方源地址(比较慢)

sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

可以选择国内的一些源地址:

阿里云

sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

清华大学

sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

sudo yum install docker-ce docker-ce-cli containerd.io

如果提示您接受 GPG 密钥,请选是。

有多个 Docker 仓库吗?

如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。

Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:

1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64  3:18.09.1-3.el7           docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7           docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7          docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7          docker-ce-stable

2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动 Docker。

sudo systemctl start docker

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

sudo docker run hello-world

卸载 docker

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

安装Nginx

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 。

查看可用的 Nginx 版本

使用 docker search nginx 命令来查看可用版本

docker search nginx

取最新版的 Nginx 镜像

docker pull nginx:latest

img

查看本地镜像

docker images

img

运行容器

docker run --name nginx-test -p 8080:80 -d nginx

参数说明:

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

img

安装成功

最后我们可以通过浏览器可以直接访问 8080 端口的 nginx 服务:

img

安装 MySQL

MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。

查看可用的 MySQL 版本

可以用 docker search mysql 命令来查看可用版本:

 docker search mysql
$ docker search mysql
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                    MySQL is a widely used, open-source relati...   2529      [OK]       
mysql/mysql-server       Optimized MySQL Server Docker images. Crea...   161                  [OK]
centurylink/mysql        Image containing mysql. Optimized to be li...   45                   [OK]
sameersbn/mysql                                                          36                   [OK]
google/mysql             MySQL server for Google Compute Engine          16                   [OK]
appcontainers/mysql      Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql         MySQL Server based on Ubuntu 14.04              6                    [OK]
drupaldocker/mysql       MySQL for Drupal                                2                    [OK]
azukiapp/mysql           Docker image to run MySQL by Azuki - http:...   2                    [OK]
...

拉取 MySQL 镜像

docker pull mysql:5.7

img

查看本地镜像

docker images

img

运行容器

docker run -itd --name mysql5.7 --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 mysql:5.7

参数说明:

  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

img

安装成功

通过 docker ps 命令查看是否安装成功:

img

本机可以通过 root 和密码 123456 访问 MySQL 服务。

img

安装 Redis

查看可用的 Redis 版本

可以用 docker search redis 命令来查看可用版本:

docker search  redis
$ docker search  redis
NAME                      DESCRIPTION                   STARS  OFFICIAL  AUTOMATED
redis                     Redis is an open source ...   2321   [OK]       
sameersbn/redis                                         32                   [OK]
torusware/speedus-redis   Always updated official ...   29             [OK]
bitnami/redis             Bitnami Redis Docker Image    22                   [OK]
anapsix/redis             11MB Redis server image ...   6                    [OK]
webhippie/redis           Docker images for redis       4                    [OK]
clue/redis-benchmark      A minimal docker image t...   3                    [OK]
williamyeh/redis          Redis image for Docker        3                    [OK]
unblibraries/redis        Leverages phusion/baseim...   2                    [OK]
greytip/redis             redis 3.0.3                   1                    [OK]
servivum/redis            Redis Docker Image            1                    [OK]
...

取最新版的 Redis 镜像

docker pull redis:latest

img

查看本地镜像

docker images

img

运行容器

docker run --restart always -itd --name redis-test -p 6379:6379 redis

参数说明:

  • -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。

img

安装成功

最后我们可以通过 docker ps 命令查看容器的运行信息:

img

接着我们通过 redis-cli 连接测试使用 redis 服务。

docker exec -it redis-test /bin/bash

img

安装 MongoDB

查看可用的 MongoDB 版本

可以用 docker search mongo 命令来查看可用版本:

docker search mongo
$ docker search mongo
NAME                              DESCRIPTION                      STARS     OFFICIAL   AUTOMATED
mongo                             MongoDB document databases ...   1989      [OK]       
mongo-express                     Web-based MongoDB admin int...   22        [OK]       
mvertes/alpine-mongo              light MongoDB container          19                   [OK]
mongooseim/mongooseim-docker      MongooseIM server the lates...   9                    [OK]
torusware/speedus-mongo           Always updated official Mon...   9                    [OK]
jacksoncage/mongo                 Instant MongoDB sharded cluster  6                    [OK]
mongoclient/mongoclient           Official docker image for M...   4                    [OK]
jadsonlourenco/mongo-rocks        Percona Mongodb with Rocksd...   4                    [OK]
asteris/apache-php-mongo          Apache2.4 + PHP + Mongo + m...   2                    [OK]
19hz/mongo-container              Mongodb replicaset for coreos    1                    [OK]
nitra/mongo                       Mongo3 centos7                   1                    [OK]
ackee/mongo                       MongoDB with fixed Bluemix p...  1                    [OK]
kobotoolbox/mongo                 https://github.com/kobotoolb...  1                    [OK]
valtlfelipe/mongo                 Docker Image based on the la...  1                    [OK]

取最新版的 MongoDB 镜像

docker pull mongo:latest

img

查看本地镜像

docker images

img

运行容器

docker run -itd --name mongo -p 27017:27017 mongo --auth

参数说明:

  • -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
  • --auth:需要密码才能访问容器服务。

img

安装成功

最后我们可以通过 docker ps 命令查看容器的运行信息:

img

接着使用以下命令添加用户和设置密码,并且尝试连接。

$ docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')

img

安装Consul

查看可用的 Consul版本

docker search Consul

获取最新版的 MongoDB 镜像

docker pull consul # 默认拉取latest
docker pull consul:1.6.1 # 拉取指定版本

运行容器

docker run -d -p 8500:8500 --restart=always --name=consul consul:latest agent -server -bootstrap -ui -node=1 -client='0.0.0.0'
  • agent: 表示启动 Agent 进程。
  • server:表示启动 Consul Server 模式
  • client:表示启动 Consul Cilent 模式。
  • bootstrap:表示这个节点是 Server-Leader ,每个数据中心只能运行一台服务器。技术角度上讲 Leader 是通过 Raft 算法选举的,但是集群第一次启动时需要一个引导 Leader,在引导群集后,建议不要使用此标志。
  • ui:表示启动 Web UI 管理器,默认开放端口 8500,所以上面使用 Docker 命令把 8500 端口对外开放。
  • node:节点的名称,集群中必须是唯一的,默认是该节点的主机名。
  • client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0
  • join:表示加入到某一个集群中去。 如:-json=192.168.0.11。

关闭防火墙或开放8500端口

【查看防火墙是否开启】

$ systemctl status firewalld

【开启或关闭防火墙】

$ systemctl start firewalld
$ systemctl stop firewalld

【查看所有开启的端口】

$ firewall-cmd --list-ports

【开启80端口】

$ firewall-cmd --zone=public --add-port=2181/tcp --permanent

【重启防火墙,使其生效】

$ firewall-cmd --reload

安装成功

最后我们可以通过浏览器可以直接访问 8500端口的 consul服务:

img

  1. services:放置服务
  2. nodes:放置consul节点
  3. key/value:放置一些配置信息
  4. dc1:配置数据中心

安装RabbitMQ

查看可用的 RabbitMQ版本

docker search RabbitMQ
docker search Rabbitmq:management

获取最新版的 RabbitMQ镜像

docker pull rabbitmq:management

运行容器

docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
  • -d 后台运行
  • -p 隐射端口
  • –name 指定rabbitMQ名称

安装成功

最后我们可以通过浏览器可以直接访问 15672端口的 rabbitMQ服务:

默认账户名密码:guest/guest

在这里插入图片描述

安装Jenkins

查看可用的 Jenkins版本

docker search jenkins
$ docker search jenkins
NAME                                         DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
jenkins                                      Official Jenkins Docker image                   4328                [OK]
jenkins/jenkins                              The leading open source automation server       1563
jenkinsci/blueocean                          https://jenkins.io/projects/blueocean           399
jenkinsci/jenkins                            Jenkins Continuous Integration and Delivery …   367
jenkinsci/jnlp-slave                         A Jenkins slave using JNLP to establish conn…   110                                     [OK]
jenkins/jnlp-slave                           a Jenkins agent (FKA "slave") using JNLP to …   86                                      [OK]
...

获取最新版的 RabbitMQ镜像

根据镜像OFFICIAL标签判断,位列第一、名字为jenkins的是 Jenkins 官方提供的镜像。我们是不是应该使用这个官方镜像呢?

如果你看过 Jenkins 文档中 Docker 安装 小节,会发现官方推荐使用的镜像是jenkinsci/blueocean,该镜像包含当前的长期支持 (LTS) 的 Jenkins 版本 (可以生产使用) ,并捆绑了所有 Blue Ocean 插件和功能。

博主第一次安装的时候使用的是jenkins镜像,其集成的 Jenkins 版本比较高,结果出现好多插件不兼容的情况,对于我等小白来说是一件比较麻烦的事。

这里我们果断使用jenkinsci/blueocean镜像,使用docker pull命令拉取:

docker pull jenkinsci/blueocean

运行容器

方式一:直接运行,运行期间产生的所有数据都保存在容器内部,容器销毁,数据丢失。

docker run \
    --name jenkins-blueocean \
    -d \
    -p 8081:8080 \
    -p 50001:50000 \
    jenkinsci/blueocean

方式二:Docker 会在宿主机上创建一个数据卷jenkins-data,容器映射该卷以持久化数据。

docker run \
  --name jenkins-blueocean \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  jenkinsci/blueocean

Tips:8080 端口用来公开访问 Web 界面,50000 端口允许访问远程 Java (JIRA) API。

这里我使用了第二种方式启动了 一个 Jenkins 容器应用:

$ docker run \
  --name jenkins-blueocean \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  jenkinsci/blueocean
93f88d6ca2129fae971298e98e20091570f6903463b203a9235660856f63020e

安装成功

最后我们可以通过浏览器可以直接访问 8080端口的 rabbitMQ服务:

Alt Text

安装ElasticSearch

查看可用的 ElasticSearch版本

docker search elasticsearch

img

获取最新版的 ElasticSearch镜像

docker pull elasticsearch:7.7.0

运行容器

docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:7.7.0

img

安装完成

最后我们可以通过浏览器可以直接访问 8080端口的 elasticsearch服务:

img

原文链接

Docker安装:https://www.runoob.com/docker/docker-install-mongodb.html

Docker安装Consul:https://www.cnblogs.com/summerday152/p/14013439.html

Docker安装RabbitMQ:https://cloud.tencent.com/developer/article/1612598

Docker安装ElasticSearch:https://www.cnblogs.com/wu199723/p/13118390.html

posted @   AJun816  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示