安装
安装必要条件
- 物理设备
服务器/云服务器/虚拟机一台 - 系统版本
centos7.x(x尽量大于2)/ubuntu 16.x。centos6是绝对没法玩了,就算勉强运行起来,出现各种未知bug会让你头皮发麻。 - 网络环境
可连外网
安装环境
- 防火墙
如果是云服务器,不要启用防火墙,直接使用云服务器的访问策略即可。如果是实体服务器,最佳方案是在对外访问的服务器启动防火墙,其他内部服务器不启动防火墙。如果必须使用防火墙,卸载掉centos7自带的firewalld,转为使用iptables。 - 端口
防火墙开放500/udp ,4500/udp接口。
安装步骤
执行安装命令
- 创建软连接
ln -s /data/docker /var/lib/docker
- Docker的镜像包括容器数据都存储在/var/lib/docker下面,如果没有单独挂载,那么默认使用根目录/的磁盘空间。如果不方便调整磁盘大小,那么可以通过软连接的方式将docker的存储存到数据盘上。
- 安装前需要检查docker存储路径是否有足够的磁盘空间。
- 如果是已经安装过docker的服务器需要调整,则需要先停止docker,拷贝数据,创建软连接,最后再重启docker。
- 使用root用户执行下面的命令行进行安装
curl https://releases.rancher.com/install-docker/17.09.sh | sh
其中17.09为版本号,如需安装其他版本,可以修改该版本号重新安装,或者可以参考网址https://rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versons,查询安装命令。
注:如果安装过程提示:container-selinux必须大于2.9,问题的原因是系统的yum源没有该软?件,解决办法是给服务器切换成阿里云的yum源。
Docker默认给root用户以及docker用户组的用户使用,如需给普通用户添加Docker使用权限,执行下列命令
usermod -aG docker your—user
- 设置Docker开机自启动
systemctl enable docker
- 查询docker信息
docker info
删除主机
比如主机配置错误,或者无法解决的异常,需要删除主机,首先现在主机界面将服务疏散,然后删除。再依次执行下面的命令
docker container stop `docker ps -aq` ##停掉所有在运行的容器
docker container prune ##删除所有已经停止的容器
docker volume prune ##删除所有未使用的数据卷
rm -rf /var/lib/rancher ##清除之前接入rancher平台的数据,会提示设备繁忙,没有关系
systemctl restart docker ## 重启一下docker 服务
执行到这,服务器就清理干净了,如果需要重新接入rancher平台,就重新走一遍添添加主机流程
卸载
如果操作不慎,出现未知问题,则可以尝试卸载重装
命令:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker
运维
服务器常用命令:
常用命令:
查看当前文件大小:du -hsx * | sort -rh | head -10
查看磁盘情况:df -h
查看服务器状态:top
查看服务器内存:free
查看容器即时状态:docker stats
查看容器列表:docker container ls
容器占用磁盘过高解决办法:
1,先执行
// 清理掉没在使用的镜像
docker container prune
docker image prune -a
docker system prune -a
2,查找是否有日志未收集
2.1 cd /var/lib/container //containers目录下面的大文件,是json.log结尾的是日志文件
2.2 du -hsx * | sort -rh | head -10 // 查看哪个占用比较大
2.3 cd xxx // 切换到大目录下
2.4 echo > xxx-json.log // 清除日志
3, 定位到是哪个容器没有收集日志
执行:docker container ls|grep xxx(刚刚大目录的前几位)
出现exit status 34状态
- 内存分析
cat /proc/buddyinfo
- 优化内存
方法一:周期性地或者在发现大块内存不足时,先进行drop_cache操作
echo 3 > /proc/sys/vm/drop_caches
方法二:必要时候进行内存整理,开销会比较大,会造成业务卡住一段时间(慎用)
echo 1 > /proc/sys/vm/compact_memory