Docker安装常用服务
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.mysql容器启动配置docker run --name mysql -v /root/mysql/data:/var/lib/mysql -v /home/mysql/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:tag配置项说明:
-v /root/mysql/data:/var/lib/mysql:挂载数据 -v /home/mysql/my.cnf:/etc/my.cnf:挂载mysql配置文件(根据自己容器内的配置位置,可以进入容器使用find / -name my.cnf 查询配置文件所在位置) -e MYSQL_ROOT_PASSWORD=root:设置root账号的密码# 6.通过其他客户端访问 如在window系统|macos系统使用客户端工具访问可以实现数据的备份(客户端工具方式)# 7.将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
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进行连接)docker run --name redis -v 宿主机目录:/data -p 6379:6379 -d redis:tag redis-server --appendonly yes(开启持久化)# 4.查看启动日志docker logs -t -f 容器id|容器名称# 5.进入容器内部查看docker exec -it 容器id|名称 bash# 6.加载外部自定义配置启动redis容器第一种:下载对应版本的redis,把redis.conf上传到宿主机,修改自己需要修改的配置然后起动(覆盖全部配置启动)(1)默认情况下redis官方镜像中没有redis.conf配置文件 需要去官网下载指定版本的配置文件(2)wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下载官方安装包(3)将官方安装包中配置文件进行复制到宿主机指定目录中如 /data/redis_data/redis.conf文件(4)修改需要自定义的配置bind 0.0.0.0 ----------开启远程访问appendonly yes ---------开启持久化appendfilename "appendonly.aof" ----------持久化文件名称(5)加载配置启动docker run --name redis -v /data/redis_data/data:/data -v /data/redis_data/redis.conf:/etc/redis/redis.conf --restart=always -p 6379:6379 -d redis:4.0.14 redis-server /etc/redis/redis.conf解释:-v /data/redis_data/data:/data:挂在数据到宿主机,实现持久化-v /data/redis_data/redis.conf:/etc/redis/redis.conf:挂在配置文件--restart=always:设置redis容器随docker启动而自启动redis-server /etc/redis/redis.conf:指定redis在docker中的配置文件路径,后台启动redis第二种:创建一个redis.conf文件,然后配置你所需要的修改的配置,然后启动(覆盖局部配置启动)(推荐使用这种,因为不会修改它一些默认配置)(1)创建redis.conf文件(/data/redis_data/目录下)touch redis.conf(2)修改redis.conf文件vi redis.conf(3)添加如下配置bind 0.0.0.0 ----------开启远程访问appendonly yes ---------开启持久化appendfilename "appendonly.aof" ----------持久化文件名称(4)加载创建的配置启动docker run --name redis -v /data/redis_data:/data -p 6379:6379 -d redis:5.0.10 redis-server /data/redis.conf
3、 安装Nginx
# 1.在docker hub搜索nginxdocker search nginx# 2.拉取nginx镜像到本地(如下下载没有指定版本默认下载最新版本)[root@localhost ~]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxafb6ec6fdc1c: Pull completeb90c53a0b692: Pull complete11fa52a0fdc0: Pull completeDigest: sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest# 3.启动nginx容器(基础)docker run --name nginx01 -p 80:80 -d nginx:1.19.10# 4.进入容器docker exec -it nginx01 bash查找nginx目录:find / -name 'nginx' -------------------关于nginx的所有目录find / -name 'nginx.conf' --------------nginx的配置文件所在目录(/etc/nginx/nginx.conf)find / -name 'index.html' --------------nginx的index页面所在目录也是nginx的资源目录(/usr/share/nginx/html/index.html)# 5.然后退出容器到宿主机exit# 6.复制配置文件到宿主机docker cp nginx01(容器id|容器名称):/etc/nginx/nginx.conf 宿主机目录例如:docker cp nginx-test:/etc/nginx/nginx.conf ./# 7.挂在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.19.10
nginx可以作为负载均衡,也可以作为服务器使用。
4、 安装Tomcat
# 1.在docker hub搜索tomcatdocker search tomcat# 2.下载tomcat镜像docker pull tomcat# 3.运行tomcat镜像docker run -p 8080:8080 -d --name mytomcat tomcat# 4.进入tomcat容器docker exec -it mytomcat bash# 5.将webapps目录挂载在外部docker run -p 8080:8080 -v /root/webapps:/usr/local/tomcat/webapps -d --name mytomcat tomcat#注意:如果挂载server.xml配置文件,挂载的路径要精确到server.xml文件#如下示例:docker run --name hkht-tomcat -p 8081:8081 -v /data/hkht/tomcat/webapps:/usr/local/tomcat/webapps -v /data/hkht/tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml -d tomcat:8.0-jre8#这里再注意:下面的图片中挂载配置文件是直接挂载到conf文件,暂时不知道什么原因,但是在实践中挂载到conf不精确到配置文件,访问前端资源是无法访问的(前后端不分离的web项目)。#还有就是这里选用tomcat的8.0-jre8镜像而不是单独的版本号8.0,因为没有单独的下载jdk镜像,如果要是用8.0需采用dockerfile进行打包,我是直接下载了包含jre的tomcat,这样就可以运行项目了(前后端不分离的web项目)。
5、 安装MongoDB数据库
# 1.运行mongDBdocker run -d -p 27017:27017 --name mymongo mongo ---无须权限docker logs -f mymongo ---查看mongo运行日志# 2.进入mongodb容器docker exec -it mymongo bash直接执行mongo命令进行操作# 3.常见具有权限的容器docker run --name mymongo -p 27017:27017 -d mongo --auth# 4.进入容器配置用户名密码mongouse admin 选择admin库db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]}) //创建用户,此用户创建成功,则后续操作都需要用户认证exit# 5.将mongoDB中数据目录映射到宿主机中docker run -d -p 27017:27017 -v /root/mongo/data:/data/db --name mymongo mongo
6、 安装ElasticSearch
- 注意: 调高JVM线程数限制数量
0.拉取镜像运行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. 预先配置
# 1.在centos虚拟机中,修改配置sysctl.confvim /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]
2.启动EleasticSearch容器
# 0.复制容器中data目录到宿主机中docker cp 容器id:/usr/share/share/elasticsearch/data /root/es# 1.运行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
3.安装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 unzipunzip -d ik elasticsearch-analysis-ik-6.4.2.zip# 3.添加自定义扩展词和停用词cd plugins/elasticsearch/configvim 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="xiaochen" -m="es with IKAnalyzer" 容器id xiaochen/elasticsearch:6.4.2
4. 安装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
7.docker可视化工具
7.1 安装Portainer
官方安装说明: https://www.portainer.io/installation/
[root@ubuntu1804 ~]#docker pull portainer/portainer# -d:后台启动,-p:映射端口,--name:容器名称,--restart=always:开机自启动,-v:挂在[root@ubuntu1804 ~]#docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer20db26b67b791648c2ef6aee444a5226a9c897ebcf0160050e722dbf4a4906e3[root@ubuntu1804 ~]#docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES20db26b67b79 portainer/portainer "/portainer" 5 seconds ago Up 4 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp portainer
7.2 登录和使用Portainer
用浏览器访问: http://localhost:9000
7.3 忘记admin的密码,重置并查看密码
#查看容器docker ps#查看容器详情docker inspect 容器id/名称#复制图中目录地址
#执行如下命令:docker run --rm -v 挂在目录地址:/data portainer /helper-reset-passworddocker run --rm -v /var/lib/docker/volumes/436d93252d9a382768eab7e9b7a29b8a10cbbf990257e37c9171eedc8df21c2e/_data:/data portainer/helper-reset-password
#然后重新启动portainerdocker start portainer#再次访问登录