辅助篇 Docker 常用服务安装
内容概述
Docker 常用服务安装教程。
# 1. 常用服务安装教程
# 1.1 安装mysql
# 1. 拉取mysql镜像到本地
docker pull mysql[:tag] # tag不加默认最新版本
# 2. 运行mysql服务
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql[:tag] # 没有暴露外部端口外部不能连接
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql[:tag]
# 3. 进入mysql容器
docker exec -it 容器名|容器ID bash
# 4. 外部查看mysql日志
docker logs 容器名|容器ID
# 5. 使用自定义配置参数
docker run --name mysql -v /root/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql[:tag]
# 6. 将容器数据位置与宿主机位置挂载保证数据安全
docker run --name mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql[:tag]
# 7. 通过其他客户端访问 如在window系统|macos系统使用客户端工具访问
# 8. 将mysql数据库备份为sql文件
docker exec mysql|容器ID sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql # 导出全部数据
docker exec mysql sh -c 'exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql # 导出指定库数据
docker exec mysql sh -c 'exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql # 导出指定库数据不要数据
# 9. 执行sql文件到mysql中
docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1.2 安装Redis服务
# 1. 在docker hub搜索redis镜像
docker search redis
# 2. 拉取redis镜像到本地
docker pull redis
# 3. 启动redis服务运行容器
docker run --name redis -d redis[:tag] # 没有暴露外部端口
docker run --name redis -p 6379:6379 -d redis[:tag] # 暴露外部宿主机端口为6379进行连接
# 4. 查看启动日志
docker logs -t -f 容器ID|容器名
# 5. 进入容器内部查看
docker exec -it 容器ID|容器名 bash
# 6. 加载外部自定义配置启动redis容器
# 默认情况下redis官方镜像中没有redis.conf配置文件 需要去官网下载指定版本的配置文件
# 1. wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下载官方安装包
# 2. 将官方安装包中配置文件进行复制到宿主机指定目录中如 /root/redis/redis.conf文件
# 3. 修改需要自定义的配置
# bind 0.0.0.0 开启远程权限
# appenonly yes 开启aof持久化
# 4. 加载配置启动
docker run --name redis -v /root/redis:/usr/local/etc/redis -p 6379:6379 -d redis redis-server
/usr/local/etc/redis/redis.conf
# 7. 将数据目录挂在到本地保证数据安全
docker run --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 1.3 安装Nginx
# 1. 在docker hub搜索nginx
docker search nginx
# 2. 拉取nginx镜像到本地
docker pull nginx
# 3. 启动nginx容器
docker run -p 80:80 --name nginx01 -d nginx
# 4. 进入容器
docker exec -it nginx01 /bin/bash
# 4.1 查找目录
whereis nginx
# 4.2 配置文件
/etc/nginx/nginx.conf
# 5. 复制配置文件到宿主机
docker cp nginx01(容器ID|容器名):/etc/nginx/nginx.conf 宿主机名录
# 6. 挂在nginx配置以及html到宿主机外部
docker run --name nginx02 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 80:80 -d nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1.4 安装Tomcat
# 1. 在docker hub搜索tomcat
docker search tomcat
# 2. 下载tomcat镜像
docker pull tomcat
# 3. 运行tomcat镜像
docker run -p 8080:8080 -d --name mytomcat tomcat
# 4. 进入tomcat容器
docker exec -it mytomcat /bin/bash
# 5. 将webapps目录挂载在外部
docker run -p 8080:8080 -v /root/webapps:/usr/local/tomcat/webapps -d --name mytomcat tomcat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1.5 安装MongoDB数据库
# 1. 运行mongDB
docker run -d -p 27017:27017 --name mymongo mongo # 无须权限
docker logs -f mymongo # 查看mongo运行日志
# 2. 进入mongodb容器
docker exec -it mymongo /bin/bash
# 直接执行mongo命令进行操作
# 3. 常见具有权限的容器
docker run --name mymongo -p 27017:27017 -d mongo --auth
# 4. 进入容器配置用户名密码
mongo
# 4.1 选择admin库
use admin
# 4.2 创建用户,此用户创建成功,则后续操作都需要用户认证
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
# 4.3 退出mongodb
exit
# 5. 将MongoDB中数据目录映射到宿主机中
docker run -d -p 27017:27017 -v /root/mongo/data:/data/db --name mymongo mongo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1.6 安装ElasticSearch
注意:调高JVM线程数限制数量
# 1.6.1 拉取镜像运行elasticsearch
# 1. dockerhub 拉取镜像
docker pull elasticsearch:6.4.2
# 2. 查看docker镜像
docker images
# 3. 运行docker镜像
docker run -p 9200:9200 -p 9300:9300 elasticsearch:6.4.2
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 启动出现如下错误

# 1.6.2 预先配置
# 1.在centos虚拟机中,修改配置sysctl.conf
vim /etc/sysctl.conf
# 2. 加入如下配置
vm.max_map_count=262144
# 3. 启用配置
sysctl -p
# 注意:这一步是为了防止启动容器时,报出如下错误:
# bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 1.6.3 启动EleasticSearch容器
# step 1:复制容器中data目录到宿主机中
docker cp 容器ID:/usr/share/share/elasticsearch/data /root/es
# step 2:运行ES容器 指定jvm内存大小并指定ik分词器位置
docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v /root/es/plugins:/usr/share/elasticsearch/plugins -v /root/es/data:/usr/share/elasticsearch/data elasticsearch:6.4.2
1
2
3
4
5
6
2
3
4
5
6
# 1.6.4 安装IK分词器
# 1. 下载对应版本的IK分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.2/elasticsearch-analysis-ik-6.4.2.zip
# 2. 解压到plugins文件夹中
yum install -y unzip
unzip -d ik elasticsearch-analysis-ik-6.4.2.zip
# 3. 添加自定义扩展词和停用词
cd plugins/elasticsearch/config
vim IKAnalyzer.cfg.xml
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext_dict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">ext_stopwords.dic</entry>
</properties>
# 4. 在ik分词器目录下config目录中创建ext_dict.dic文件 编码一定要为UTF-8才能生效
vim ext_dict.dic 加入扩展词即可
# 5. 在ik分词器目录下config目录中创建ext_stopword.dic文件
vim ext_stopwords.dic 加入停用词即可
# 6. 重启容器生效
docker restart 容器ID
# 7. 将此容器提交成为一个新的镜像
docker commit -a="ibytehorizon" -m="es with IKAnalyzer" 容器ID ibytehorizon/elasticsearch:6.4.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 1.6.5 安装Kibana
# 1. 下载kibana镜像到本地
docker pull kibana:6.4.2
# 2. 启动kibana容器
docker run -d --name kibana -e ELASTICSEARCH_URL=http://10.15.0.3:9200 -p 5601:5601 kibana:6.4.2
1
2
3
4
5
2
3
4
5
# 2. Docker中出现如下错误解决方案
[root@localhost ~]# docker search mysql 或者 docker pull 这些命令无法使用
Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: x509: certificate has expired or is not yet valid
1
2
2

- 注意:这个错误的原因在于是系统的时间和docker hub时间不一致,需要做系统时间与网络时间同步
# step 1:安装时间同步
sudo yum -y install ntp ntpdate
# step 2:同步时间
sudo ntpdate cn.pool.ntp.org
# step 3:查看本机时间
date
# step 4:从新测试
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10

最近更新: 2025/03/25, 09:15:48