欢迎光临
我们一直在努力

docker重启报错Error starting daemon: error initializing graphdriver: devmapper: Base Device

u22e阅读(1239)

docker 重启出现

Error starting daemon: error initializing graphdriver: devmapper: Base Device

解决方法:

按照一些命令操作

  1. systemctl stop docker   (停止docker 服务)
  2. dmsetup udevcomplete_all (释放未完成的磁盘操作)
  3. sudo rm -rf  /var/lib/docker/* (清空docker 数据)
  4. * reboot  (注:当有镜像或容器文件删除不了时,重启服务器)
  5. systemctl start docker  (重启docker服务)

CentOS 7的yum更换为国内的阿里云yum,epel源

u22e阅读(658)

Yellow dog Updater(Yum)是CentOS所有版本的默认包管理器,yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的依赖性问题,便于管理大量系统的更新问题,其理念是使用一个中心仓库(repository)管理一部分甚至一个distribution的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等操作,减少了Linux用户一直头痛的dependencies的问题。可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm包时遇到的依赖性问题,保持与RPM数据库的一致性。

我们现在把CentOS 7.5的默认yum源更换为国内的阿里云yum源,让下载安装及更新速度更快一些,替换很简单,简单记录一下步骤。
1、备份

  1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  2. mv /etc/yum/repos.d/CentOS-Base.repo{,.date -I}

2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/

  1. CentOS 5
  2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
  3. 或者
  4. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
  5. CentOS 6
  6. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  7. 或者
  8. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  9. CentOS 7
  10. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  11. curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、添加EPEL

  1. CentOS 6
  2. wget -O /etc/yum.repos.d/epel-6.repo http://mirrors.aliyun.com/repo/epel-6.repo
  3. CentOS 7
  4. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4、清理缓存并生成新的缓存

  1. yum clean all
  2. yum makecache

EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。这个源兼容RHEL及像CentOS和Scientific Linux这样的衍生版本。
我们可以很容易地通过yum命令从EPEL源上获取上万个在CentOS自带源上没有的软件。EPEL提供的软件包大多基于其对应的Fedora软件包,不会与企业版Linux发行版本的软件发生冲突或替换其文件。
RHEL/CentOS系统有许多第三方源,比较流行的比如RpmForge,RpmFusion,EPEL,Remi等等。然而需要引起注意的是,如果系统添加了多个第三方源,可能会因此产生冲突——一个软件包可以从多个源获取,一些源会替换系统的基础软件包,从而可能会产生意想不到的错误。已知的就有Rpmforge与EPEL会产生冲突。对于这些问题我们建议,调整源的优先权或者有选择性的安装源,但是这需要复杂的操作,如果你不确定如何操作,我们推荐你只安装一个第三方源。

centos7环境下的docker安装 切换docker国内镜像源

u22e阅读(931)

卸载旧版本(如果安装过旧版本的话)

  1. sudo yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

  1. sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

可以查看所有仓库中所有docker版本,并选择特定版本安装

  1. yum list docker-ce –showduplicates | sort -r

安装docker

  1. sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-18.06.1.ce

启动并加入开机启动

  1. $ sudo systemctl start docker
  2. $ sudo systemctl enable docker

更换docker的镜像源

  1. 1.修改或创建daemon.json文件:vi /etc/docker/daemon.json
  2. 将以下配置写入到文件中,保存并退出(不会操作的百度下vi命令吧):
  3. {
  4. “registry-mirrors”: [“http://hub-mirror.c.163.com”]
  5. }
  6. 2.重启docker:
  7. systemctl daemon-reload
  8. systemctl restart docker

运行下面的命令,将 image 文件从仓库抓取到本地。

  1. $ docker image pull library/hello-world
  2. $ docker image pull hello-world

docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。

由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略。所以上面两个命令的效果是一样的。

centos安装jenkins以及初始化配置

u22e阅读(642)

一、下载jenkins

下载地址:点击下载稳定jenkins
选择自己需要的版本下载

二、安装jenkins
一、卸载旧jenkins
1.查询以前是否安装jenkins

rpm -qa |grep jenkins

本人以前安装了jenkins,这个是不稳定版的,所以重新安装稳定版
2.卸载 jenkins

rpm -e jenkins

3.彻底删除jenkins残留文件

find / -iname jenkins | xargs -n 1000 rm -rf

二、安装jenkins
1.切换到jenkins安装包目录

cd /opt

2.安装jenkins

rpm -ivh jenkins-2.164.1-1.1.noarch.rpm

3.自动安装Jenkins完成之后,Jenkins安装后的目录有

find / -iname jenkins

 

三、配置jenkins
一、在jenkins配置文件中配置jdk环境变量
vim /etc/init.d/jenkins

二、配置Jenkins的端口
vim /etc/sysconfig/jenkins

三、修改jenkins默认的操作用户
linux下jenkins默认使用jenkins用户进行脚本和文件的操作,如果不修改,在部署项目时需要调整涉及到的文件和目录的操作权限,可以调整jenkins配置文件,将用户修改为root用户。将JENKINS_USER=”jenkins”调整为JENKINS_USER=“root”:

vim /etc/sysconfig/jenkins

四、修改目录的相应权限
chown -R root /var/log/jenkins
chgrp -R root /var/log/jenkins
chown -R root /var/lib/jenkins
chgrp -R root /var/lib/jenkins
chown -R root /var/cache/jenkins
chgrp -R root /var/cache/jenkins

五、启用端口
vim /etc/sysconfig/iptables

六、启动jenkins
service jenkins start

正常一步一步就行

汉化插件

http://updates.jenkins-ci.org/download/plugins/localization-zh-cn/

汉化教程

https://blog.csdn.net/qq_43031301/article/details/102661866

清理Docker占用的磁盘空间

u22e阅读(767)

1. Docker System命令

docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:

 

可知,Docker镜像占用了543MB磁盘,Docker容器占用了581.2MB磁盘,Docker数据卷占用了0B磁盘

docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了……所以使用之前一定要想清楚吶。

执行docker system prune -a命令之后,Docker占用的磁盘空间减少了很多:

2. 手动清理Docker镜像/容器/数据卷

对于旧版的Docker(版本1.13之前),是没有Docker System命令的,因此需要进行手动清理。这里给出几个常用的命令:

删除所有dangling镜像(即无tag的镜像)
docker ps -a | grep Exit | cut -d ‘ ‘ -f 1 | xargs docker rm

删除所有dangling镜像(即无tag的镜像)
docker rmi $(docker images | grep “^<none>” | awk “{print $3}”)

删除所有dangling数据卷(即无用的Volume)
docker volume rm $(docker volume ls -qf dangling=true)

3. 限制容器的日志大小

有一次,当我使用1与2提到的方法清理磁盘之后,发现并没有什么作用,于是,我进行了一系列分析。

在Ubuntu上,Docker的所有相关文件,包括镜像、容器等都保存在/var/lib/docker/目录中:

du -hs /var/lib/docker/
97G /var/lib/docker/

Docker竟然使用了将近100GB磁盘,这也是够了。使用du命令继续查看,可以定位到真正占用这么多磁盘的目录:

92G  /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7

docker ps可知,Nginx容器的ID恰好为a376aa694b22,与上面的目录/var/lib/docker/containers/a376aa694b22的前缀一致:

docker ps
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMES
a376aa694b22        192.168.59.224:5000/nginx:1.12.1            "nginx -g 'daemon off"

因此,Nginx容器竟然占用了92GB的磁盘。进一步分析可知,真正占用磁盘空间的是Nginx的日志文件。那么这就不难理解了。我们Fundebug每天的数据请求为百万级别,那么日志数据自然非常大。

使用truncate命令,可以将Nginx容器的日志文件“清零”:

truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f1

当然,这个命令只是临时有作用,日志文件迟早又会涨回来。要从根本上解决问题,需要限制Nginx容器的日志文件大小。这个可以通过配置日志的max-size来实现,下面是Nginx容器的docker-compose配置文件:

nginx:
image: nginx:1.12.1
restart: always
logging:
driver: "json-file"
options:
  max-size: "5g"

重启Nginx容器之后,其日志文件的大小就被限制在5GB,再也不用担心了~

4. 重启Docker

有一次,当我清理了镜像、容器以及数据卷之后,发现磁盘空间并没有减少。根据Docker disk usage提到过的建议,我重启了Docker,发现磁盘使用率从83%降到了19%。根据高手指点,这应该是与内核3.13相关的Bug,导致Docker无法清理一些无用目录:

it’s quite likely that for some reason when those container shutdown, docker couldn’t remove the directory because the shm device was busy. This tends to happen often on 3.13 kernel. You may want to update it to the 4.4 version supported on trusty 14.04.5 LTS.

The reason it disappeared after a restart, is that daemon probably tried and succeeded to clean up left over data from stopped containers.

我查看了一下内核版本,发现真的是3.13:

uname -r
3.13.0-86-generic

如果你的内核版本也是3.13,而且清理磁盘没能成功,不妨重启一下Docker。当然,这个晚上操作比较靠谱。

Ubuntu 16.04安装docker详细步骤

u22e阅读(726)

因需要安装opendronemap,而这个依赖于docker,所以记录了一下安装docker的步骤,比较简单.通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是开发人员和小型团队的理想选择。

开始安装

  • 由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
  • 更新apt包索引:
$ sudo apt-get update
  • 安装以下包以使apt可以通过HTTPS使用存储库(repository):
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加Docker官方的GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 使用下面的命令来设置stable存储库:
$sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • 再更新一下apt包索引:
$ sudo apt-get update
  • 安装最新版本的Docker CE:
$ sudo apt-get install -y docker-ce

验证docker

  • 查看docker服务是否启动:
$ systemctl status docker

  • 若未启动,则启动docker服务:
$ sudo systemctl start docker
  • 经典的hello world:
$ sudo docker run hello-world

有以上输出,表示docker安装成功.

 

ubuntu16.04系统安装nvidia显卡驱动

u22e阅读(863)

1. ubuntu 16.04默认安装了第三方开源的驱动程序nouveau,安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。

编辑文件blacklist.conf

sudo vim /etc/modprobe.d/blacklist.conf

若未安装vim则sudo apt-get install vim安装或使用vi

在文件最后部分插入以下两行内容

blacklist nouveau

options nouveau modeset=0

更新系统

sudo update-initramfs -u

重启系统(一定要重启)

 

验证nouveau是否已禁用

lsmod | grep nouveau

没有信息显示,说明nouveau已被禁用,接下来可以安装nvidia的显卡驱动。

 

2. 在英伟达的官网上查找你自己电脑的显卡型号然后下载相应的驱动。网址:http://www.nvidia.cn/page/home.html

我下载的版本:NVIDIA-Linux-x86_64-396.18.run(注意不同的版本最后安装执行的具体选项不同)

下载后的run文件拷贝至home目录下。

 

3. 在ubuntu下按ctrl+alt+f1进入命令行界面,

然后在命令行界面下输入:

sudo service lightdm stop      //这个是关闭图形界面,不执行会出错。

然后卸载掉原有驱动:

sudo apt-get remove nvidia-*  (若安装过其他版本或其他方式安装过驱动执行此项)

 

4.

给驱动run文件赋予执行权限:

sudo chmod  a+x NVIDIA-Linux-x86_64-396.18.run

安装:

sudo ./NVIDIA-Linux-x86_64-396.18.run -no-x-check -no-nouveau-check -no-opengl-files //只有禁用opengl这样安装才不会出现循环登陆的问题

-no-x-check:安装驱动时关闭X服务

-no-nouveau-check:安装驱动时禁用nouveau

-no-opengl-files:只安装驱动文件,不安装OpenGL文件

 

安装过程中的选项:(这是copy别人的,自己的没记住,我也是尝试选择了好多遍才安装好)

The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。
Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?  选择 No 继续。
问题没记住,选项是:install without signing
问题大概是:Nvidia’s 32-bit compatibility libraries? 选择 No 继续。
Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up.  选择 Yes  继续

这些选项如果选择错误可能会导致安装失败,没关系,只要前面不出错,多尝试几次就好。

 

5.

挂载Nvidia驱动:

modprobe nvidia

检查驱动是否安装成功:

nvidia-smi

 

centos6和centos7 vmware/ESXI分区扩容不需要重启

u22e阅读(1423)

Centos6+7 vmware分区扩容不需要重启

1.查看centos7系统挂载点信息

df -h查看挂载点信息

  1. 扩展VMWare-centos7硬盘空间

关闭Vmware的centos7系统,才能在VMWare菜单中设置需要增加到的磁盘⼤大⼩小

如果这个选项是灰⾊色的,说明此虚拟机建有快照,把快照全部删除再试试!

$ ls /sys/class/scsi_device/

0:0:0:0 1:0:0:0 2:0:0:0

Then rescan the scsi bus. Below you can replace the '0\:0\:0\:0' with the actual scsi bus name found with the
previous command. Each colon is prefixed with a slash, which is what makes it look weird.

~$ echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan

3.对新增加的硬盘进⾏行行分区、格式化

我们增加了了空间的硬盘是 /dev/sda
分区:
[root@localhost]# fdisk /dev/sda
p       查看已分区数量量(我看到有两个 /dev/sda1 /dev/sda2)
n       新增加⼀一个分区
p       分区类型我们选择为主分区
分区号输⼊入3(因为1,2已经⽤用过了了,sda1是分区1,sda2是分区2,sda3分区3)
回⻋车      默认(起始扇区)
回⻋车      默认(结束扇区)
t        修改分区类型
选分区3
8e       修改为LVM(8e就是LVM)
w       写分区表
q       完成,退出fdisk命令
使⽤partprobe 命令 或者重启机器
格式化分区3命令:
mkfs.ext3 /dev/sda3

4.添加新LVM到已有的LVM组,实现扩容
lvm             进⼊lvm管理
lvm>pvcreate /dev/sda3   这是初始化刚才的分区3
lvm>vgextend centos /dev/sda3 将初始化过的分区加⼊到虚拟卷组centos (卷和卷
组的命令可以通过 vgdisplay )
lvm>vgdisplay -v或者vgdisplay查看free PE /Site
lvm>lvextend -l+6143 /dev/mapper/centos-root  扩展已有卷的容量(6143 是通过
vgdisplay查看free PE /Site的⼤⼩)
lvm>pvdisplay 查看卷容量,这时你会看到⼀个很⼤的卷了
lvm>quit  退出

上⾯面只是卷扩容了了,下⾯面是⽂文件系统的真正扩容,输⼊入以下命令:
CentOS7下⾯由于使⽤的是XFS命令:
/dev/mapper/centos-root是df -h查看到根⽬录的挂载点

xfs_growfs /dev/mapper/centos-root

CentOS6使⽤用命令:

resize2fs /dev/mapper/centos-root

查看新的磁盘空间:
df -h

Atlassian Confluence 安装部署和汉化

u22e阅读(2501)

Atlassian Confluence(简称Confluence)是一个专业的wiki程序。
它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。
Confluence 不是一个开源软件,非商业用途可以免费使用。
Confluence使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息,文档协作,集体讨论。
目前,Confluence被用于广泛地用于项目团队,开发团队,市场销售团队。

一,安装部署
1,Confluence下载最新版本

官网:https://www.atlassian.com/software/confluence/download?os=linux

百度网盘 http://pan.baidu.com/s/1o66C9vk
2,解压

cd /usr/local  tar -zxvf atlassian-confluence-5.1.2
3, 启动confluence :/usr/local/atlassian-confluence-5.1.2.bak/bin/start-confluence.sh
4, 默认配置目录是/usr/local/confluence-data ,可以通过修改此文件、修改指定目录 /usr/local/confluence/confluence/WEB-INF/classes/confluence-init.properties

二,破解
1.打开网页http://localhost:8090(或者locathost换成你电脑的ip)记下Server ID
2.停止confluence: /usr/local/atlassian-confluence-5.1.2.bak/bin/stop-confluence.sh
3.从/usr/local/atlassian-confluence-5.1.2/confluence/WEB-INF/lib中复制出来atlassian-extras-2.4.jar包
4.破解文件网盘地址 http://pan.baidu.com/s/1ntKlNzb 运行破解文件keygen.bat:(如果无法启动,请编辑脚本中jdk所在路径)
4.1 输入相关信息(随便造),输入Server ID
4.2 单击‘patch!’按钮,选择从项目中获得的atlassian-extras-2.4.jar包,(如果此jar包在patch时候出现错误,请使用crack中jar进行patch)
4.3 单击‘gen!’生成key,同时目录中的atlassian-extras-2.4.jar已重新生成,还有一个atlassian-extras-2.4.bak文件
4.4 将新生成atlassian-extras-2.4.jar包 复制至项目目录中覆盖原来jar
4.5 重新启动confluence
4.6 将生成的key粘贴,单击Production installation ,破解成功
5,初始化
5.1 选择mysql数据库,将mysql-connector-java-5.1.12.jar放入/usr/local/atlassian-confluence-5.1.2/confluence/WEB-INF/lib文件夹中,需重启
5.2 setup database,填写数据库url为 jdbc:mysql://ip地址/confluence?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=storage_engine=InnoDB
新建数据库时设置编码为“utf-8”;此时地址中也应该设置utf-8,保持一致,否则中文会出现乱码,输入数据库账号密码
5.3 通过修改/usr/local/confluence-data/confluence.cfg.xml 可手动配置数据库连接信息

三,还原数据库
注意:confluence不支持大版本的升级,只能小版本升级,
大版本升级,数据还原报错(4.1–>5.1.2)失败
升级方法:4.1升级至4.3.7(4版本中的最高版本),然后4.3.7->5.1.2成功
具体就是:将4.1的备份还原至4.3.7,然后备份4.3.7,在5.1.2上再进行还原(略烦)

四,汉化
汉化插件包 网盘地址:http://pan.baidu.com/s/1i3rTGk1
界面-插件-上传插件 Confluence-Language-STD-CN.jar ,选择语言

最好需要修改系统安装目录权限,方便后面创建页面, 例如:

chmod -R 777 /opt/atlassian/confluence/confluence

最小化权限

chown -R confluence.confluence /opt/atlassian/confluence/confluence/

重启confluence

centos7 安装polipo

u22e阅读(1193)

安装git :

yum install git

下载

git clone https://github.com/jech/polipo.git

cd polipo

(可选)使用发布的版本

git checkout polipo-1.1.1

安装:

make all

su -c ‘make install’

若,make cc : 命令未找到:

make install gcc

make install gcc-c++

若,make : makeinfo : 命令未找到:

yum install texinfo

建立配置文件:

mkdir /opt/polipo nano /opt/polipo/config

添加如下内容:
touch /var/log/polipo.log

logSyslog = true
socksParentProxy = “localhost:1080”
socksProxyType = socks5
logFile = /var/log/polipo.log
logLevel = 4
proxyAddress = “0.0.0.0”
proxyPort = 8123
chunkHighMark = 50331648
objectHighMark = 16384

serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
新建启动脚本
vim /usr/lib/systemd/system/polipo.service

Unit]
Description=polipo web proxy
After=network.target

[Service]
Type=simple
WorkingDirectory=/tmp
User=root
Group=root
ExecStart=/usr/soft/polipo/polipo -c /opt/polipo/config
Restart=always
SyslogIdentifier=Polipo

[Install]
WantedBy=multi-user.target

启动
systemctl start polipo.service