docker部署项目 入门版
1 通用
1.1 权限
开启挂载目录权限
#开启目录权限
chmod a+rwx /usr/local/test#开启docker挂载权限
chmod a+rw /var/run/docker.sock
所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data
1.2 可视化
- portainer(先用这个)
- Rancher(CI/CD再用)
什么是portainer?
Docker图形化界面管理工具!提供一个后台面板供我们操作
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer# 测试
http://42.192.168.139:8088/
平时不适用,可以测试玩玩、
学习参考:
https://www.bilibili.com/video/BV1og4y1q7M4
2 部署nginx
[root@vitloud home]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16148 [OK]
# 下载
docker pull nginx# 运行测试
# -d: 后台运行
# -name: 给容器命名
# -p: 宿主机端口:容器内部端口
# -v: /宿主机路径:容器内路径docker run -d \
-v cnginx:/etc/nginx \
-p 3344:80 \
--name vitcloud-nginx nginx# 测试
curl localhost:3344# 进入容器nginx01
[root@vitloud home]# docker exec -it nginx01 /bin/bash
# 查找nginx配置路径
root@e7979f326715:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分麻烦,我要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器就可以自动修改?-v 数据卷
3 部署tomcat
# 官方的使用
docker run -it --rm tomcat:9.0# 我们之前的启动都是后台,停止了容器之后,容器还是可以查到 docker run -it rm. 一般用来测试,用完删除# 下载再启动
docker pull tomcat# 启动运行
# 访问地址:域名:3355
docker run -d -p 3355:8080 -name tomcate01 tomcat# 进入容器
[root@vitloud home]# docker exec -it tomcate01 /bin/bash# 部署网站
cd /usr/local/tomcat/webapps
cp -r webapps.dist/* webapps# 发现问题:1、linux命令少了,2、没有webapps,阿里云镜像的原因,默认是最小镜像,所有不必要的都剔除掉
思考问题:我们以后部署项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外部提供一个映射路径,webapps我们在外部放置项目,就自动同步到内部就好了。
4 部署MySQL
# 后去镜像
docker pull mysql:5.7# 运行容器,需要做数据挂载!(需要配置密码)
# 官方测试
# docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag# -d: 后台运行
# -p: 端口映射 暴露端口:容器端口
# -v: 卷挂载
# -e: 环境配置
# --name: 容器名字
docker run -d \
-p 3310:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--name mysql01 mysql:5.7
可以通过Navicat连接测试
删除容器 数据也在
5 实战:部署Redis集群
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wIDQub8X-1643381954752)(image-20220121230315954.png)]
5.1 配置网卡
# 创建网卡
docker network create redis --subnet 172.38.0.0/16
# 查看网卡
docker network ls
5.1 通过脚本创建redis配置文件
for port in $(seq 1 6); \
do
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >>/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
5.3 启动 docker redis 容器
# -p: 端口映射 外部端口:内部端口
# -d: 后台运行
# --net: 使用redis网络
# -ip: 绑定ip
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.confdocker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.confdocker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.confdocker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.confdocker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.confdocker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
5.4 进入容器并创建集群
# 进入容器
docker exec -it redis-1 /bin/sh
# 创建集群
# 集群切片:--cluster-plicas 1
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
5.5 连接测试
# -c: 集群
redis-cli -c
# 查看集群信息
127.0.0.1:6379> cluster info
# 查看集群节点
cluster nodesset a b
-> Redirected to slot [15495] located at 172.38.0.13:6379
OK# 模拟redis-3宕机 172.38.0.13
docker stop redis-3
使用dokcer后,所有的技术都会慢慢遍的简单
7 部署es+kibana
elasticsearch
es 暴露端口很多
es 十分耗内存
es的数据一般需要放置到安全目录!挂载
# --net somenetwork ? 网络配置# 启动
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2# 会很卡
docker stats # 查看cpu的状态# 赶紧关闭,在呢个价内存的限制,修改配置文件 -e 环境配置修改
# -e ES_JAVA_OPTS="-Xms64 -Xmx512m"
docker run -d --name elasticsearch01 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2# 测试是否成功
curl localhost:9200
docker部署项目 入门版相关推荐
- IDE工具(45) idea使用Docker部署项目到服务器的全过程
一.前言 温馨小提示: 案例源码demo放文章最后了 基本环境 idea CentOS7.3服务器 docker springboot项目 二.服务器配置docker远程连接 可参考小编的另外一篇文章 ...
- 【7】idea集成docker部署项目
[7]idea集成docker部署项目 一.修改docker配置 1.1 修改服务器docker.service服务信息 允许其他主机远程访问服务器的docker vim /usr/lib/syste ...
- (四)docker部署项目
docker部署项目 基于ubuntu16.4+python3的flask web项目,使用gunicorn启动,项目运行时需要加载一些动态链接库,并且项目在运行时需要多个后缀为.vpo的授权文件,项 ...
- docker部署项目自动化脚本
docker部署项目脚本,脚本会完成容器停止,删除,镜像删除,镜像构造,运行容器等一系列操作 该脚本配合jenkins使用,真的舒服 #!/bin/bash echo "开始执行脚本&quo ...
- docker部署项目 dockerfile 实战 SpringBoot、flask
1 SpringBoot微服务打包Docker镜像 1.1 构建springboot项目 package com.example.springboot.demo;import org.springfr ...
- Spring Boot细节挖掘(Docker部署项目)
如今 Docker 的使用已经非常普遍,特别是在一线互联网公司,使用 Docker 技术可以帮助企业快速水平扩展服务,从而达到弹性部署业务的能力.在云服务概念兴起之后,Docker 的使用场景和范围进 ...
- 上线项目 Docker部署项目到服务器总结
文章目录 Docker简介 Docker为什么出现? 安装Docker 阿里云镜像加速 找到镜像加速器 配置使用 回顾HelloWorld流程 底层原理 Docker的常用命令 部署项目 1.安装do ...
- docker部署项目通过127.0.0.1访问数据库:Connection refused
背景说明 同一台机子(以linux为例)部署以下项目.数据库 docker部署mysql.mongo.postgresql.clickhouse数据库 docker部署spring-boot项目.py ...
- 自定义404页面并打包docker部署项目
前言 最近看了docker的用法,对于容器的理解感觉还行,当是自我感觉总是不靠谱的.所以现在就来使用docker容器实际部署一下项目,检验自己对于知识的掌握. SpringBoot项目和docker的 ...
最新文章
- 剑指offer:面试题25. 合并两个排序的链表
- OC-@dynamic 关键字
- android 键盘遮盖输入框_Android各种键盘挡住输入框解决办法
- 会话跟踪技术之HttpSession
- java jml_JML 入门
- [Discuz插件] HUX虚拟社区 3.0.9绿色版(huxcity)+打工模块
- 未来机器人哆拉A梦身上的高科技程序应用
- python 网易_python发送网易邮件
- 用了这么久的 Chrome,你不会还没掌握这个功能吧?
- 万能地图下载器标绘线的参数说明
- 第三方调用微信支付接口
- mysql 闰年,[MySQL]--gt;查询5天之内过生日的同事中的闰年2月
- java this逃逸_java this引用逃逸详解
- windows server 2012 NIC组合---概念
- 云锁和安全狗哪个好 Bypass阿里云盾、百度云加速、安全宝、安全狗、云锁、360主机卫士SQL注入防御-系统/上网/安全
- c语言智能手环程序,c+智能手环怎么用 c+智能手环使用图文教程
- 一文读懂什么是云服务器,和本地服务器的区别,云服务的用途,华为云服务器的获取
- 新手也可以制作出大片的效果——Movavi Video Editor 15 Plus Mac
- pytorch一小时速成
- 与全球外国人即时聊天的网站
热门文章
- Linux - 收藏集 - 掘金
- 严定贵:互联网金融的速度与激情
- 您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序
- 《ASP.NET Web 站点高级编程》勘误 Part 3
- 94授权登录steam怎么用_Steam手机令牌如何绑定,绑定后好处多多
- smarty半小时快速上手入门教程
- hibernate 多对一(Many-to-one)单向关联
- 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台
- 捉虫记 C++转java Java中equals和==的区别
- golang常见内存泄漏