Docker更改默认网段
前言
正如Docker在安装时会指定默认存储目录,在启动容器是也会有一个默认的容器IP,那么就有人问了:人家好好的默认ip,你给改了干什么呢?
对的,个人用户自行搭建环境时的确无需调整,但在企业中可能会遇到ip白名单的情况,也就是说,你使用容器默认ip,可能就没办法访问某些服务了,所以不得不使用自定义的网段。
更改默认网段
我们可以直接使用docker inspect bridge查看docker的网段信息:
123456789101112[root@lemonlzy ~]# docker inspect bridge[ { ... { "Subnet": "172.17.0.0/16", "Gateway": "172.17.0.1" } ] }, ...
可以看到Docker ...
Docker更改默认存储目录
前言
在实际使用中,服务器可能由于空间的原因,会额外挂载盘,但是Docker的默认安装目录可能不在额外大容量的盘内,所以造成大容量的盘空空如也,其他盘符怨声载道。
在安装Docker后,可以通过下面命令查看具体位置:
12[root@lemonlzy ~]# sudo docker info | grep Dir Docker Root Dir: /var/lib/docker
更改安装目录
如果docker是1.12或以上的版本(这里仅针对Docker1.12以上版本),可以修改(或新建)/etc/docker/daemon.json文件,如果没有该文件则手动创建即可,在其中加入 "graph": "/data/docker"(/data/docker为目标存储目录位置,如有需要自行调整),然后重启Docker即可:
1234vim /etc/docker/daemon.json { "graph": "/data/docker"}
再次查看Docker安装目录是否更改成功: ...
如何修改无法启动的Docker容器的配置
背景在运行容器的时候,由于错误的配置导致原来可以启动的docker容器不能启动了。相信很多人的做法是删除容器重建一个,这样也是可以的,但是你的配置和插件就得重新安装,非常麻烦。最小的代价当然是修改原来的配置让容器能启动。
那么问题来了,docker容器起不来了应该怎么改配置?
docker cp若有兴趣可参考docker cp官方文档:
在容器和本地文件系统之间复制文件/文件夹
用法:
12docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
docker cp将SRC_PATH的内容复制到DEST_PATH,即从源位置复制到目标位置,可以从容器的文件系统复制到本地计算机,也可以从容器的文件系统复制到本地文件系统。
实例由于我开启的容器是Nginx,直接使用exec命令进入容器,修改配置重启时,容器启动报错,瘫痪了。正确的解决姿势是将容器的配置cp出来(到宿主机),修改正确然后cp回去,启动就行了。
将容器的配置cp出来(到 ...
Docker安装
为什么要使用Docker?
我们应该首先了解下Docker是什么,可参考Docker官方文档:
Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付,测试和部署代码的方法,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker的特点:
快速,一致地交付您的应用程序
响应式部署和扩展
在同一硬件上运行更多工作负载
简而言之,Docker最重要的特性就是环境的统一、非常方便地迁移以及应用间的相互隔离:
将一整套环境打包封装成镜像,无需重复配置环境,解决环境带来的种种问题。
Docker容器间是进程隔离的,谁也不会影响谁。
如何安装Docker?
安装一些必要的系统工具:
1yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
1yum-config-manager --add-repo https://mir ...
记一次Linux服务器关机重启后的服务启动流程
前言
也是到了复工的时间,远程上班的时候打开了下之前搭建的测试环境,得嘞,服务器都给我关掉了,赶紧联系IT开机,开机倒是很容易,但是由于有些服务没有加入自启动的缘故,得一个个去启动服务,搭建环境那么久了,服务器一年关不了一次,就给我碰上了,行吧,记录下WEB网站所用到的服务以及启动服务过程。
启动过程
我们WEB所用到的服务具体是Tomcat、MySQL、Nginx、Redis、MemCache、httpd、ActiveMQ。需要注意的是,我所用的Linux服务器发行版是CentOS 6.5,如采用7以上的版本,则使用systemctl进行服务的启动、关闭、重启。
Tomcat:
1[root@XXX ~]# sh /usr/local/tomcat/bin/startup.sh
MySQL:
1[root@XXX~]# service mysqld start
Nginx:
1[root@XXX~]# service nginx start
Redis,采用的是自行编写的脚本启动方式,这里列举脚本中其中一条启动命令:
1[root@XXX~]# nohup /data/redi ...
Jenkins常见问题之HTTP-ERROR-404
前言
最近需要利用Jenkins 2.0的流水线即Pipeline,实现CI/CD,所以自行在服务器上学着搭建Jenkins。当然,Jenkins的安装很简单,附Jenkins用户手册:
前提:安装好java。
去Jenkins下载地址下载对应版本的Jenkins。
解压至自定义文件夹,笔者文件夹为/var/lib/jenkins。
centOS7下使用systemctl start jenkins.service启动Jenkins服务。
打开浏览器,以http://ip:8081进行访问(Jenkins默认端口8080),即可看到图形化的Jenkins设置页面
步骤清晰明了,但是现实往往不是那么如意,因为笔者服务器上的8080端口被Tomcat所使用,所以在启动Jenkins服务前进行了访问端口的修改:
1[root@lemonlzy ~]# vim /etc/sysconfig/jenkins
然后在访问http://ip:8081时,没有打开Jenkins的图形设置界面,如下所示:
解决办法
问题显而易见,404就是资源未找到 ...
Kettle-Pentaho-Data-Integration-连接数据库之数据库驱动异常
前言
最近需要做仪表盘相关的项目,用到了ETL工具Kettle,下载链接:data-integration-kettle,这是一款基于Java开发的工具,当然,Java环境变量相关配置就不在这里说明了,不过相信大家电脑上一般也都配好了环境变量,那么理论上来说应该解压Kettle即可用才对。然而在进行数据库连接时,测试连接抛出了一个报错:
123456789101112131415错误连接数据库 [xxx] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseDriver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.org.gjt.mm.mysql.Driverorg.pentaho.di.core.exception ...
Git克隆至之status code 128:SSL connect error
前言
前两天IT部发了封邮件,将gitlab由HTTP改为了HTTPS,正好要去Jenkins构建部署上线包,将原有的克隆链接由HTTP改为了HTTPS,然后点击构建,没想到的是,构建直接就报错了。
123456789101112131415161718Fetching changes from the remote Git repositoryERROR: Error fetching remote repo 'origin'hudson.plugins.git.GitException: Failed to fetch from https://xxx@gitlab.xxx.com/xxx at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:899) at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1114) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1145) at org.jenkins ...
Java学习笔记之Session
1、服务器如何确保在一次会话范围内,多次获取的Session对象是同一个?
Session的实现是依赖于Cookie的。
第一次获取Session,没有Cookie,会在内存中创建一个新的Session对象,同时在响应头中设置set-cookie:JSESSIONID = Session对象ID。
后续请求其他资源时,请求头会携带上次的cookie:JESSIONID = Session对象ID。
服务器自动获取请求头重的cookie信息,根据cookie信息去查找内存中id为JESSIONID的Session对象,找到后返回此Session对象的标记。
所以通过cookie的方式确保再一次会话范围内多次获取的Session对象为同一个。
2、当客户端关闭后,服务器不关闭,两次获取Session是否为同一个?
默认情况下,不是同一个,Session依赖于Cookie,Cookie在浏览器关闭时会被销毁,并且Session只在一次会话中获取的Session对象为同一个,客户端关闭意味着会话结束。
如果需要相同,则可以创建Cookie,设置Cookie键为JES ...
Tomcat常见问题之无法加载资源工厂类dbcp
问题背景
前两天公司新开发了一个项目,使用的Spring Boot2.0,而原有的项目部署在Tomcat 7之上,所以需要升级一下Tomcat的版本,在安装新的Tomcat 8,并将原有的配置复制到Tomcat 8之后,启动服务会发现一直报一个错误:
12345678[ERROR][org.springframework.web.context.ContextLoader] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tNewPriceApplyDao' defined in ServletContext resource [/WEB-INF/applicationContext-beans.xml] Cannot resolve reference to bean 'dataSource' while setting bean property ...