使用Docker部署开发环境

使用Docker进行线上开发环境部署

在Linux上安装Docker

 # 系统内核是3.10以上的
root@theSun:/# uname -r
4.4.0-185-generic

# 系统版本
root@theSun:/# cat /etc/os-release 
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
 
# 查看镜像
docker image

卸载:
1、卸载依赖
sudo apt-get purge docker-ce docker-ce-cli containerd.io
2、删除资源
sudo rm -rf /var/lib/docker

Docker安装部署RabbitMQ

这里注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面。

查询镜像

 docker search rabbitmq:management

可以看到如下结果:

[root@localhost ~]# docker search rabbitmq:management
INDEX       NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/macintoshplus/rabbitmq-management   Based on rabbitmq:management whit python a...   1                    [OK]
docker.io   docker.io/transmitsms/rabbitmq-sharded        Fork of rabbitmq:management with sharded_e...   0
[root@localhost ~]#

获取镜像

docker pull rabbitmq:management

可以看到如下结果

[root@localhost ~]# docker pull rabbitmq:management
Trying to pull repository docker.io/library/rabbitmq ...
management: Pulling from docker.io/library/rabbitmq
e7bb522d92ff: Pull complete
ad90649c4d84: Pull complete
5a318b914d6c: Pull complete
cedd60f70052: Pull complete
f4ec28761801: Pull complete
b8fa44aa9074: Pull complete
e8002a209c24: Pull complete
cd1206edcd43: Pull complete
769be0727074: Pull complete
7308b93d35af: Pull complete
c4102ef22c29: Pull complete
fefc8e1aa4b5: Pull complete
a271d400045b: Pull complete
b0d4c40c62de: Pull complete
Digest: sha256:8761de2c22badfc86dfe89791dc9dbf122f67ff0f8981966573d267af421b97f
[root@localhost ~]#

运行镜像

docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management

看到如下结果,变成功了:

[root@localhost ~]# docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
e194a2dbeb52f2296dfb6d1c527cf052d82be5ed9a4c974d70dcd6af3da3eb7e
[root@localhost ~]#

访问管理页面

访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest,如:

在这里插入图片描述

需要注意的是

  • 在云服务器上,默认情况下,RabbitMQ的端口号15672是不开放的,需要自己登陆控制台添加安全组规则,放开对15672端口号的访问限制。
  • Linux系统上,宿主IP地址直接就是该系统的公网地址。

在这里插入图片描述

Docker安装Redis

找到一个合适的docker的redis的版本

可以去docker hub中去找一下

https://hub.docker.com/_/redis?tab=tags 在这里插入图片描述

使用docker安装redis

sudo docker pull redis

安装好之后使用docker images即可查看

truedei@truedei:~$ 
truedei@truedei:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              987b78fc9e38        10 days ago         104MB
httpd               latest              a8a9cbaadb0c        2 weeks ago         166MB
fjudith/draw.io     latest              7b136fc80d31        3 weeks ago         683MB
mysql               5.7.29              f5829c0eee9e        5 weeks ago         455MB
truedei@truedei:~$ 
truedei@truedei:~$ 

准备redis

因为需要redis的配置文件,这里最好还是去redis的官方去下载一个redis使用里面的配置文件即可

redis中文官方网站:http://www.redis.cn/download.html

在这里插入图片描述

下载后解压出来:

在这里插入图片描述

这个redis.conf文件就是咱们需要的,为了保险,还是拷贝一下,做个备份。

配置redis

修改redis.conf配置文件: 主要配置的如下:

bind 127.0.0.1 #注释掉这部分,使redis可以外部访问 daemonize no#用守护线程的方式启动 requirepass 你的密码#给redis设置密码 appendonly yes#redis持久化  默认是no tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

创建本地与docker映射的目录,即本地存放的位置

创建本地存放redis的位置;

可以自定义,因为我的docker的一些配置文件都是存放在/data目录下面的,所以我依然在/data目录下创建一个redis目录,这样是为了方便后期管理

truedei@truedei:redis-5.0.5$ sudo mkdir /data/redis
truedei@truedei:redis-5.0.5$ sudo mkdir /data/redis/data

配置文件拷贝到刚才创建好的文件里

因为我本身就是Linux操作系统,所以我可以直接拷贝过去,如果你是windows的话,可能需要使用ftp拷贝过去,或者直接复制内容,然后粘贴过去。

truedei@truedei:redis-5.0.5$ sudo cp -p redis.conf /data/redis/
truedei@truedei:redis-5.0.5$ 

启动docker redis

启动:

truedei@truedei:~$ sudo docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf  -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

参数解释:

-p 6379:6379:把容器内的6379端口映射到宿主机6379端口 -v /data/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中 -v /data/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份 redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动 –appendonly yes:redis启动后数据持久化

查看是否启动成功

查看是否成功启动:sudo docker ps

truedei@truedei:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
85cb7d83a2ff        redis               "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        0.0.0.0:6379->6379/tcp              redis
0a122a08125f        mysql:5.7.29        "docker-entrypoint.s…"   5 weeks ago         Up About an hour    0.0.0.0:3306->3306/tcp, 33060/tcp   mysql57
truedei@truedei:~$ 

在这里插入图片描述

可以查看一下日志:sudo docker logs redis

truedei@truedei:~$ sudo docker logs redis
1:C 29 May 2020 01:16:22.107 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 29 May 2020 01:16:22.107 # Redis version=6.0.3, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 29 May 2020 01:16:22.107 # Configuration loaded
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 6.0.3 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 29 May 2020 01:16:22.108 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 29 May 2020 01:16:22.108 # Server initialized
1:M 29 May 2020 01:16:22.108 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 29 May 2020 01:16:22.108 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1:M 29 May 2020 01:16:22.108 * Ready to accept connections
truedei@truedei:~$ 

在这里插入图片描述

Docker安装MongoDB

MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。

1、查看可用的 MongoDB 版本

访问 MongoDB 镜像库地址: https://hub.docker.com/_/mongo?tab=tags&page=1。

可以通过 Sort by 查看其他版本的 MongoDB,默认是最新版本 mongo:latest在这里插入图片描述
在这里插入图片描述

此外,我们还可以用 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]

2、取最新版的 MongoDB 镜像

这里我们拉取官方的最新版本的镜像:

$ docker pull mongo:latest

在这里插入图片描述

3、查看本地镜像

使用以下命令来查看是否已安装了 mongo:

$ docker images

在这里插入图片描述

4、运行容器

安装完成后,我们可以使用以下命令来运行 mongo 容器:

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

参数说明:

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

在这里插入图片描述
在这里插入图片描述

Docker安装ElasticSearch

下载ElasticSearch

docker pull elasticsearch:6.8.6

运行ElasticSearch

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” -e “ES_JAVA_OPTS=-Xms512m -Xmx512m” elasticsearch:6.8.6

查看正在运行的容器

docker ps

启动测试

网页输入:“主机地址:9200”,出现如下json数据,即成功!同样需要放开端口 在这里插入图片描述

Docker安装MySQL

拉取MySQL镜像

docker pull mysql 

查看镜像

docker images 

创建目录

mkdir -p /home/docker/mysql/conf.d 
mkdir -p /home/docker/mysql/data 

这两个用于保存配置和数据

创建MySQL容器

docker run -di -p 3307:3306 -v /home/docker/mysql/conf.d:/etc/mysql/conf.d -v /home/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql
 

-v 映射目录,将容器内的配置与数据文件夹,映射到宿主机目录

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口

-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码

进入MySQL容器,

docker exec -it mysql /bin/bash

登陆mysql

mysql -u root -p

输入密码,即可进入mysql,证明安装成功。

打开远程连接

此时,当使用Navicat远程连接docker容器中的mysql时,会报错

1251 - Client does not support authentication protocol 

这是因为mysql并没有打开远程连接,打开方法如下:

1,容器中登录mysql,查看mysql的版本

mysql> status; 

mysql Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)

2,进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)授权

mysql> GRANT ALL ON *.* TO 'root'@'%';  

刷新权限

mysql> flush privileges;  

此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则

更改加密规则

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;  

更新root用户密码

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  

刷新权限

mysql> flush privileges;  

OK,设置完成,再次使用 Navicat 连接数据库

退出mysql数据库

mysql> exit; 

退出当前mysql容器

exit; 

优化mysql所用内存

通过docker查看容器使用内存情况

docker stats 

一般情况下,默认装的Mysql是8.0以上,占用内存在350M以上,这个对于小机器来说,占比还是比较大的,可以优化。

进入文件夹

 cd /home/docker/mysql/conf.d/ 

查看 .cnf 文件,如果没有,随便新建个,例如

vim my.cnf

输入内容,并保存

[mysqld] 
performance_schema = OFF  

重启mysql 容器

docker restart mysql容器的id 

再查看

docker stats 

清理linux中buff/cache过大的方法

第一步:sync先同步一下

sync 

第二步:清cache

echo 3 > /proc/sys/vm/drop_caches

Docker安装Nginx和Tomcat

Docker pull拉取相关的镜像

在这里插入图片描述
在这里插入图片描述

Docker run 启动服务器

Docker run -d -p 9090:80 nginx

后台-d运行一个nginx,并把本地的9090端口映射到nginx的80端口。也可以用docker run -d -P xx用-P来随机映射一个端口

用lsof -i:9090查看端口

在这里插入图片描述

Docker run -d -p 8080:80 tomcat

与docker运行nginx同理。

对Tomcat编写Dockerfile

FROM tomcat  # 启动镜像的名字
MAINTAINER xudong xxd0225@gmail.com # 维护信息
COPY jpress-v3.3.0.war /usr/local/tomcat/webapps  # 把当前目录的war包copy到tocat的目录下

在这里插入图片描述

开始制作一个imagesdocker build .这个之多的名字是none, 可以用tag来指定一个名字,注意名字要全部小写。

docker build -t chasaystest:1.0 .

然后运行docker run -d -P 80:8080 chasaystest。 这样就可以把tomcat 8080的映射到1234端口。本机用1234就可以访问tomcat端口。http://localhost:1234

在这里插入图片描述

想要了解更多内容,欢迎访问我的博客呀!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值