在Linux上安装Docker
1 | # 系统内核是3.10以上的 |
1 | step 1: 安装必要的一些系统工具 |
1 | 查看镜像 |
Docker安装部署RabbitMQ
这里注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面。
查询镜像
1 | docker search rabbitmq:management |
可以看到如下结果:
1 | [ ] |
获取镜像
1 | docker pull rabbitmq:management |
可以看到如下结果
1 | [ ] |
运行镜像
1 | docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management |
看到如下结果,变成功了:
1 | [root@localhost ~]# docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management |
访问管理页面
访问管理界面的地址就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest,如:
需要注意的是:
- 在云服务器上,默认情况下,RabbitMQ的端口号15672是不开放的,需要自己登陆控制台添加安全组规则,放开对15672端口号的访问限制。
- Linux系统上,宿主IP地址直接就是该系统的公网地址。
Docker安装Redis
找到一个合适的docker的redis的版本
可以去docker hub中去找一下
https://hub.docker.com/_/redis?tab=tags
使用docker安装redis
1 | sudo docker pull redis |
安装好之后使用docker images即可查看
1 | 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持久化 默认是notcp-keepalive 300
#防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
创建本地与docker映射的目录,即本地存放的位置
创建本地存放redis的位置;
可以自定义,因为我的docker的一些配置文件都是存放在
/data
目录下面的,所以我依然在/data
目录下创建一个redis
目录,这样是为了方便后期管理
1 | truedei@truedei:redis-5.0.5$ sudo mkdir /data/redis |
把配置文件
拷贝到刚才创建好的文件里
因为我本身就是Linux操作系统,所以我可以直接拷贝过去,如果你是windows的话,可能需要使用ftp拷贝过去,或者直接复制内容,然后粘贴过去。
1 | truedei@truedei:redis-5.0.5$ sudo cp -p redis.conf /data/redis/ |
启动docker redis
启动:
1 | 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
1 | truedei@truedei:~$ sudo docker ps |
可以查看一下日志:sudo docker logs redis
1 | truedei@truedei:~$ sudo docker logs redis |
Docker安装MongoDB
MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。
1、查看可用的 MongoDB 版本
访问 MongoDB 镜像库地址: https://hub.docker.com/_/mongo?tab=tags&page=1。
可以通过 Sort by 查看其他版本的 MongoDB,默认是最新版本 mongo:latest。
此外,我们还可以用 docker search mongo 命令来查看可用版本:
1 | docker search mongo |
2、取最新版的 MongoDB 镜像
这里我们拉取官方的最新版本的镜像:
1 | $ docker pull mongo:latest |
3、查看本地镜像
使用以下命令来查看是否已安装了 mongo:
1 | $ docker images |
4、运行容器
安装完成后,我们可以使用以下命令来运行 mongo 容器:
1 | $ 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镜像
1 | docker pull mysql |
查看镜像
1 | docker images |
创建目录
1 | mkdir -p /home/docker/mysql/conf.d |
1 | mkdir -p /home/docker/mysql/data |
这两个用于保存配置和数据
创建MySQL容器
1 | 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容器,
1 | docker exec -it mysql /bin/bash |
登陆mysql
1 | mysql -u root -p |
输入密码,即可进入mysql,证明安装成功。
打开远程连接
此时,当使用Navicat远程连接docker容器中的mysql时,会报错
1 | 1251 - Client does not support authentication protocol |
这是因为mysql并没有打开远程连接,打开方法如下:
1,容器中登录mysql,查看mysql的版本
1 | mysql> status; |
mysql Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)
2,进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)授权
1 | mysql> GRANT ALL ON *.* TO 'root'@'%'; |
刷新权限
1 | mysql> flush privileges; |
此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则
更改加密规则
1 | mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; |
更新root用户密码
1 | mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; |
刷新权限
1 | mysql> flush privileges; |
OK,设置完成,再次使用 Navicat 连接数据库
退出mysql数据库
1 | mysql> exit; |
退出当前mysql容器
1 | exit; |
优化mysql所用内存
通过docker查看容器使用内存情况
1 | docker stats |
一般情况下,默认装的Mysql是8.0以上,占用内存在350M以上,这个对于小机器来说,占比还是比较大的,可以优化。
进入文件夹
1 | cd /home/docker/mysql/conf.d/ |
查看 .cnf 文件,如果没有,随便新建个,例如
1 | vim my.cnf |
输入内容,并保存
1 | [mysqld] |
重启mysql 容器
1 | docker restart mysql容器的id |
再查看
1 | docker stats |
清理linux中buff/cache过大的方法
第一步:sync先同步一下
1 | sync |
第二步:清cache
1 | 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来随机映射一个端口
1 | 用lsof -i:9090查看端口 |
Docker run -d -p 8080:80 tomcat
与docker运行nginx同理。
对Tomcat编写Dockerfile
1 | FROM tomcat # 启动镜像的名字 |
开始制作一个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
相关问题
Docker中安装Tomcat外部访问报错404资源未找到
1.将webapps.dist更名为webapps
2.将webapps.dist中的内容复制到webapps