首页
书籍
统计
友链
Search
1
wlop 4K 壁纸 4k8k 动态 壁纸
504 阅读
2
Docker搭建Typecho博客
435 阅读
3
keytool证书导入
320 阅读
4
JAVA IO
313 阅读
5
SpringBoot整合SpringCache
283 阅读
解决方案
JAVA基础
JVM
多线程
开源框架
数据库
前端
分布式
框架整合
中间件
容器部署
设计模式
数据结构与算法
开发工具
百度网盘资源
天翼网盘资源
阿里网盘资源
登录
Search
标签搜索
java
javase
java8
docker
springboot
thread
spring
分布式
锁
mysql
linux
redis
源码
typecho
centos
map
lambda
stream
nginx
software
少年
累计撰写
174
篇文章
累计收到
9
条评论
首页
栏目
解决方案
JAVA基础
JVM
多线程
开源框架
数据库
前端
分布式
框架整合
中间件
容器部署
设计模式
数据结构与算法
开发工具
百度网盘资源
天翼网盘资源
阿里网盘资源
页面
书籍
统计
友链
搜索到
26
篇与
容器部署
的结果
2023-03-18
Docker镜像3种获取方式
Docker镜像获取方式一、pull from registry必须在线,从registry拉取分公有和私有。公有,例如:dockerhub,私有,例如公司自己搭建的,只能公司内部访问。常用公有registry:需要注册账号。https://hub.docker.com/https://quay.io/镜像操作常用命令:查看镜像操作帮助:docker image拉取镜像:docker image pull 容器名称 可以简写成 docker pull 容器命令注意:默认拉取官方latest版本。例如拉取nginx:docker pull nginx查看本地已经拉取的镜像:docker image ls拉取指定版本镜像:docker image pull 容器名称:版本例如拉取nginx1.20.0版本镜像docker image pull nginx:1.20.0拉取其他registry镜像docker pull quay.io/jitesoft/nginx查看镜像详细信息docker image inspeack 镜像id例如查看nginx镜像详细信息:docker image inspect 7ab27删除镜像docker image rm 镜像命令或者id例如删除nginx镜像:docker image rm 7ab注意:不能删除正在使用镜像,否则会报错。必选删除正在使用的容器,才能删除,停止容器也不行docker image rm 605提示“Error response from daemon: conflict: unable to delete 605c77e624dd (cannot be forced) - image is being used by running container 3a79cefa5c8e”停止容器,删除也不行:必选先删除相关容器,才能删除:二、build from Dockerfile必须在线,因为需要一些基础包,从Dcokerfile构建。后面专门介绍这种方式构建镜像。三、load from file离线,文件导入。导出镜像文件docker image save 镜像名称:版本 -o 导出后镜像名称.image例如到处ngxin镜像:docker image save nginx:1.20.0 -o nginx.image导入镜像文件将导出的文件拷贝到需要使用的电脑上,通过下面命令导入。docker image load -i /root/nginx.image第1种最简单,第2种最复杂,但是也是最常用的,重点学习第2中。第3中相对简单一点。
2023年03月18日
2 阅读
0 评论
1 点赞
2023-03-14
docker入门
容器:一种打包技术。docker:打包技术的一种技术实现。一、基础知识基础命令查看docker相关信息docker versoin查看docker环境信息docker info查看命令帮助docker --helpimage镜像image是一个只读文件,里面包含文件系统、源码、可文件、依赖、工具等一些运行application所需的文件,可以理解成一个模板。docker image具有分层的概念。container容器一个运行中的“docker image”。是指是复制image并在image最上层加上一层读写的层。基于同一个image可以创建多个container。image获取方式1、自己制作2、从registry拉取,比如docker hub创建容器查看容器帮助命令docker container --help当没有拉取镜像时,会自动拉取。查看当前运行了那些容器:docker container lsid:唯一的id。image:使用的镜像。command:执行的命令created:创建时间,这里是2分钟之前。status:状态ports:端口协议names: 容器名称,不设置时,随机产生一个。创建容器:docker container run 镜像命令例如:创建nginx容器dockekr container run nginx注意:此时是在窗口运行,ctrl+c会停止运行容器。关闭容器docker stop 容器名称或者容器id例如:关闭nginx查看容器信息:docker container list关闭容器:docker container 7b51查看容器查看运行中的容器docker container list查看创建过或者使用过的容器docker container ps -a 或者 docker container ls -a区别:ps是早点docker里面使用的参数,docker container --help里面看不到,只看得见list的参数。删除容器docker container rm 容器命令或者id例如:删除nginx容器docker container rm 7b注意大部分的命令container是可以省略的。例如:创建容器: docker run nginx 查看容器: docker ps -a 停止容器: docker stop nginx 删除容器: docker rm nginx建议,还是带上container,清晰表示是在对容器操作,因为后面还有对镜像image的操作。二、小技巧批量操作比如:批量删除容器,如何操作?正常情况删除容器1、查看所有容器docker container ls -a2、删除多个容器docker container rm 容器1的ID 容器2的ID 容器3的ID 容器4的ID同时删除容器1、2、3、4。但是如果有很多个,就可以通过参数传递批量删除。批量删除1、查看所有容器iddocker container ls -aq2、参数传递批量删除docker container rm $(docker container ls -aq)批量关闭、删除同理。注意不能删除正在运行的容器。删除运行中的容器查看运行中的容器docker container li直接删除会提示容器正在运行不能删除。docker container rm nginx删除运行中容器1、停止容器,再删除。停止 docker container stop 681 再删除 docker container rm 6812、强制删除容器docker container rm c3e -f注意:强制删除多个一个参数 -f三、docker两种运行模式attached前台运行模式docker container run -p 80:80 nginxctrl+c在窗口创建容器后,界面输入创建容器日志,此时ctrl+c关闭后容器就关闭了。查看容器docker psdetached后台运行模式只需要添加参数detached,简写一个d即可。docker container run -d -p 80:80 nginx此时查看容器,依然在后台运行docker ps进入容器只需要加attach参数即可docker container attach其实此时已经进入容器,访问nginx页面刷新,就可看到页面输出日志。此时执行ctrl+c,就会关闭容器。ctrl+c查看容器已经关闭docker ps注意:不推荐attach前台模式。查看日志后台运行模式detached,查看日志。docker container logs 容器id或名称例如查看nginx日志docker container logs nginx动态跟踪日志只需要加参数-fdocker container logs -f 容器id或名称例如:动态跟踪nginx日志docker container logs -f nginx交互式模式1、用于执行创建容器后,执行的命令。只需要加参数-itdocker container run -it 容器名称 容器中要执行的命令例如:创建ubunt容器后,执行sh脚本docker container run -it ubuntu sh此时已经进入ubuntu的sh模式了,可以直接执行命令,查看ubuntu相关信息了。执行exit后执行退出ubuntu,并关闭了。因为我们是在交互模式,容器中执行的exit相当于关闭容器了。另一种进入交互模式办法。2、exec经常使用的容器交互方式docker exec -it 容器名称/容器id sh这样就进入了交互模式。例如,进入nginx容器里面,执行相关操作。docker exec -it nginx sh里面执行exit退出的是nginx的sh,并没有关闭nginx容器。这就是和上面没有exec参数的不同。注意:这是使用最频繁的命令。四、容器运行了那些进程docker top 容器名称/容器id可通过安装pstree查看进程关系树。可以看到创建一个docker容器,实际就是运行了一个脚本,而容器中又运行了其他进程子进程。注意:容器中进程id和实际看到的id是不同的。比如:创建busybox容器,进入容器内查看进程id。docker container run -it busybox sh查看进程ps在容器外部执行查看容器进程命令:docker container top fe0可以看到容器内部查看到的sh脚本进程和容器外部看到的sh脚本进程是不同的。这是由于docker容器隔离形成。五、docker容器运行背后发生了什么以创建nginx容器为列:docker container run -d -p 80:80 --name mynginx nginx说明:在本地查找是否有nginx镜像。如果有镜像,直接执行第4步骤。如果本地没有,去远程image registry查找nginx镜像(默认registry是Docker Hub)下载最新版本nginx镜像(默认nginx:latest)基于nginx镜像来创建一个新的容器,并准备运行。docker engine引擎给这个容器分配一个虚拟ip地址。在宿主机上打开80端口,并把容器的80端口转发到宿主机的80端口上。启动容器,运行指定命令。(启动容器,其实就是执行一个脚本启动nginx)。
2023年03月14日
5 阅读
0 评论
2 点赞
2022-11-29
Docker安装ShowDoc ssl https nginx配置
Docker安装ShowDoc ssl https nginx配置一、docker安装showdoc1、拉取镜像# 中国大陆镜像安装命令(安装后记得执行docker tag命令以进行重命名)docker pull registry.cn-shenzhen.aliyuncs.com/star7th/showdoc docker tag registry.cn-shenzhen.aliyuncs.com/star7th/showdoc:latest star7th/showdoc:latest 2、创建showdoc数据目录mkdir -p /mydata/showdoc/showdoc_data/html chmod -R 777 /mydata/showdoc/showdoc_data3、启动容器docker run -d --name showdoc --user=root --privileged=true -p 4999:80 \ -v /mydata/showdoc/html:/var/www/html/ star7th/showdoc4、设置随容器启动docker update --restart=always showdoc此时旧可以通过IP+port访问了,注意,端口放行,云服务器白名单开启。二、showdoc配置https、ssl、nginx配置nginx https、ssl配置如下:server { listen 443 ssl; server_name doc.yanxizhu.com; client_max_body_size 1000m; ssl on; ssl_certificate /etc/nginx/conf.d/key/doc.yanxizhu.com_bundle.crt; ssl_certificate_key /etc/nginx/conf.d/key/doc.yanxizhu.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location ^~ / { proxy_pass http://自己云服务器ip:4999/; proxy_redirect off; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header http_user_agent $http_user_agent; } } server { listen 80; server_name doc.yanxizhu.com; rewrite ^(.*) https://doc.yanxizhu.com$1 permanent; }注意:修改自己域名和对应端口。此时就可以通过域名https://doc.yanxizhu.com/访问了。
2022年11月29日
32 阅读
0 评论
2 点赞
2022-10-27
CentOS安装Sentinel并自启动
CentOS安装Sentinel设置自启动1、下载下载地址https://github.com/alibaba/Sentinel/releases2、安装提前创建好安装路径、Jar包存放文件夹、脚本执行文件夹、日志存放文件夹mkdir /usr/local/ sentinel mkdir /usr/local/sentinel jar mkdir /usr/local/sentinel sh mkdir /usr/local/sentinel log将sentinel-dashboard-1.8.6.jar执行Jar包上传至jar文件夹3、脚本编写脚本sentinel.sh,按照自己路径、版本号调整,存放到上面新建的sh文件夹中。脚本如下:#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 SENTINEL_NAME=sentinel-dashboard-1.8.6.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh sentinel.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $SENTINEL_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq "0" ]; then echo "${SENTINEL_NAME} is already running. pid=${pid} ." else nohup java -Dserver.port=9100 -Dcsp.sentinel.dashboard.server=192.168.56.10:9100 -Dproject.name=sentinel-dashboard -jar /usr/local/sentinel/jar/$SENTINEL_NAME > /usr/local/sentinel/log/sentinellog.file 2>&1 & #nohup java -jar /usr/local/sentinel/jar/$SENTINEL_NAME > /usr/local/sentinel/log/sentinellog.file 2>&1 & echo "${SENTINEL_NAME} start success" fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${SENTINEL_NAME} is not running" fi } #输出运行状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${SENTINEL_NAME} is running. Pid is ${pid}" else echo "${SENTINEL_NAME} is NOT running." fi } #重启 restart(){ stop start } #根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac进入/usr/local/sentinel/sh/文件夹下,执行命令修改权限chmod +x sentinel.sh注意:1、如果直接复制到windows中文本的,注意windows和linx的换行符不同,导致启动失败,可使用notepad++中编辑-->文档格式转换-->转换成Unix格式。2、注意给脚本设置权限4、测试本地测试是否能够启动启动sentinel服务sh sentinel.sh start停止sentinel服务sh sentinel.sh stop重启sentinel服务sh sentinel.sh restart查看sentinel服务状态sh sentinel.sh status服务启动后,可通过IP+端口+项目名访问Sentinel登录页面5、自启动本地测试可通过命令启动没问题后,编写启动服务sentinel.service,放到/usr/lib/systemd/system目录,内容如下:[Unit] Description=sentinel After=network.target [Service] Environment="JAVA_HOME=/usr/local/java/jdk-11.0.10" Type=forking ExecStart=/usr/local/sentinel/sh/sentinel.sh start ExecReload=/usr/local/sentinel/sh/entinel.sh stop ExecStop=/usr/local/sentinel/sentinel/sh/sentinel.sh restart PrivateTmp=true [Install] WantedBy=multi-user.target重载所有服务systemctl daemon-reload设置开机启动systemctl enable sentinel.service查看开机启动状态systemctl is-enabled sentinel.service查看服务状态systemctl status sentinel手动启动 Sentinelsystemctl start sentinel手动停止Sentinelsystemctl stop sentinel手动重启Sentinelsystemctl restart sentinel6、结果根据启动日志INFO: Sentinel log output type is: file INFO: Sentinel log charset is: utf-8 INFO: Sentinel log base directory is: /root/logs/csp/ INFO: Sentinel log name use pid is: false INFO: Sentinel log level is: INFO . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.5.12) 2022-10-27 15:07:50.068 INFO 733 --- [ main] c.a.c.s.dashboard.DashboardApplication : Starting DashboardApplication using Java 11.0.10 on 10.0.2.15 with PID 733 (/usr/local/sentinel/jar/sentinel-dashboard-1.8.6.jar started by root in /) 2022-10-27 15:07:50.280 INFO 733 --- [ main] c.a.c.s.dashboard.DashboardApplication : No active profile set, falling back to 1 default profile: "default" 2022-10-27 15:08:54.090 INFO 733 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9100 (http) 2022-10-27 15:08:54.616 INFO 733 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-10-27 15:08:54.616 INFO 733 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.60] 2022-10-27 15:08:57.256 INFO 733 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-10-27 15:08:57.259 INFO 733 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 40159 ms 2022-10-27 15:08:58.193 INFO 733 --- [ main] c.a.c.s.dashboard.config.WebConfig : Sentinel servlet CommonFilter registered 2022-10-27 15:09:04.587 INFO 733 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9100 (http) with context path '' 2022-10-27 15:09:04.788 INFO 733 --- [ main] c.a.c.s.dashboard.DashboardApplication : Started DashboardApplication in 79.475 seconds (JVM running for 82.322) 2022-10-27 15:09:13.768 INFO 733 --- [nio-9100-exec-3] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2022-10-27 15:09:13.807 INFO 733 --- [nio-9100-exec-3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2022-10-27 15:09:14.119 INFO 733 --- [nio-9100-exec-3] o.s.web.servlet.DispatcherServlet : Completed initialization in 311 ms启动成功,通过访问IP+端口+项目,成功访问到Sentinel登录页面,账号:sentinel,密码:sentinel
2022年10月27日
57 阅读
0 评论
2 点赞
2022-05-10
Nginx配置优化
Nginx配置优化1、隐藏nginx版本信息#不显示nginx版本 server_tokens off2、Buffers缓存另一个很重要的参数为buffer,如果buffer太小,Nginx会不停的写一些临时文件,这样会导致磁盘不停的去读写。client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 8m; large_client_header_buffers 2 1k;client_body_buffer_size:允许客户端请求的最大单个文件字节数client_header_buffer_size:用于设置客户端请求的Header头缓冲区大小,大部分情况1KB大小足够client_max_body_size:设置客户端能够上传的文件大小,默认为1mlarge_client_header_buffers:该指令用于设置客户端请求的Header头缓冲区大小3、开启Gzip压缩 #开启Gzip压缩 gzip on; #压缩等级 1-9 等级越高,压缩效果越好,节约宽带,但CPU消耗大 gzip_comp_level 2; #最小压缩文件大小 gzip_min_length 1000; #根据某些头部决定是否压缩, gzip_proxied expired no-cache no-store private auth; #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 gzip_types text/plain application/x-javascript text/xml text/css application/xml; #是否传输gzip压缩标志 gzip_vary on;4、开启高效传输模式 #开启高效传输模式。 sendfile on; #该指令必须在sendfile打开的状态下才会生效,主要是用来提升网络包的传输'效率' tcp_nopush on; #该指令必须在keep-alive连接开启的情况下才生效,来提高网络包传输的'实时性' tcp_nodelay on;5、FastCGI配置相关参数是为了改善网站的性能:减少资源占用,提高访问速度。 #为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。 fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m; #指定连接到后端FastCGI的超时时间。 fastcgi_connect_timeout 300; #指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。 fastcgi_send_timeout 300; #指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。 fastcgi_read_timeout 300; #用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。 fastcgi_buffer_size 64k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。 fastcgi_buffers 4 64k; #默认值是fastcgi_buffers的两倍。 fastcgi_busy_buffers_size 128k; #表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。 fastcgi_temp_file_write_size 128k; #表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。 fastcgi_cache TEST; #用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分 fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m;6、超时配置 #客户端连接超时时间,单位是秒 keepalive_timeout 60; #客户端请求头读取超时时间 client_header_timeout 10; #设置客户端请求主体读取超时时间 client_body_timeout 10; #响应客户端超时时间 send_timeout 10;7、expires缓存配置 #对于图片,通常过期时间可以设置为一个月 location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ { expires 30d; } #对js/css,通常过期时间设置为1周 location ~* \.(js|css)$ { expires 7d; }
2022年05月10日
162 阅读
0 评论
3 点赞
1
2
...
6