分类目录归档:运维日志

Gitlab从13版本升级至16及迁移docker容器操作

背景: 因gitlab存在漏洞需升级至最新版本,当前发布的最新版本为16.8.0-ee。当前服务的安装方式是通过传统的yum方式,为了日后升级方便,这次将迁移至docker 容器运行。

整个过程分为以下部分:

  • GitLab 备份
  • Docker 迁移部署
  • 还原备份
  • GitLab 版本升级
  • 功能验证

一、备份

1.1 仓库备份

Gitlab 的备份相对比较简单,直接使用以下命令即可:

sudo gitlab-rake gitlab:backup:create

注意,备份的过程非常漫长请耐心等待(当然取决于你的所有仓库大小) 备份好的文件存放在:/var/opt/gitlab/backups 也就是Gitlab 的安装目录,一般情况下是这个,如果找不到则需要自行百度一下。备份文件类似这样 1705434707_2024_01_17_13.4.3-ee_gitlab_backup.tar。备份的路径如果找不到,可以在/etc/gitlab/gitlab.rb 中的gitlab_rails['backup_path']找到。

1.2 配置文件备份

  • 备份所有的配置文件 /etc/gitlab/*
  • 备份nginx配置文件 /var/opt/gitlab/nginx/*

1.3 停止服务

sudo gitlab-ctl stop

二、迁移部署

docker 容器部署也相对比较简单,官方文档:GitLab Docker images | GitLab,当然官方的操作是很复杂的,这里我们使用docker-compose 来部署就非常简单。

2.1 创建Docker目录

首先,我们先建好目录,来保存Docker我们的数据:

cd /data/gitlab # 这里切换到你实际保存的路径
mkdir data
mkdir etc
mkdir log
mkdir backups
###################################################
ll
drwxr-xr-x. 2 root root 4096 1月  20 21:38 backups
drwxr-xr-x. 2 root root 4096 1月  20 21:38 data
drwxr-xr-x. 2 root root 4096 1月  20 21:40 etc
drwxr-xr-x. 2 root root 4096 1月  20 21:38 log

然后,把刚才在1.2中的配置移到这里的etc 目录中来,如:

# pwd
/data/gitlab/etc

# ll
-rw-------. 1 root root 111413 1月  21 00:01 gitlab.rb
-rw-------. 1 root root  18896 1月  21 00:01 gitlab-secrets.json
drwxr-xr-x. 2 root root   4096 1月  21 00:01 trusted-certs

2.2 创建容器

我们使用docker-compose 来创建文件,先切换到你的dockerfiles目录,没有可以自己建一个。

特别注意:切记一步到位!版本一定是你当前服务器的版本!!

特别注意:切记一步到位!版本一定是你当前服务器的版本!!

特别注意:切记一步到位!版本一定是你当前服务器的版本!!

首先,查看当前版本号命名为:

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 以下输出的就是你当前的版本号
13.4.3-ee

然后,创建gitlab.yml 配置文件,参考以下文件即可。

cd /data/dockerfiles/
vim gitlab.yml

gitlab.yml 配置文件:

version: '3.6'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:13.4.3-ee.0' # 注意:这里的版本号与上面输出的必须一致!
    restart: always
    hostname: 'gitlab'
    container_name: 'gitlab'
    privileged: true
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        # 以下的配置文件从 /etc/gitlab/gitlab.rb 里面复制过来即可
        # 以下是作者的服务器配置,不建议照搬!
        external_url 'http://192.168.1.1'
        puma['port'] = 8010
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
        gitlab_rails['gitlab_default_theme'] = 2
        gitlab_rails['object_store']['enabled'] = false
        gitlab_rails['object_store']['connection'] = {}
        gitlab_rails['object_store']['storage_options'] = {}
        gitlab_rails['object_store']['proxy_download'] = false
        gitlab_rails['object_store']['objects']['artifacts']['bucket'] = nil
        gitlab_rails['object_store']['objects']['external_diffs']['bucket'] = nil
        gitlab_rails['object_store']['objects']['lfs']['bucket'] = nil
        gitlab_rails['object_store']['objects']['uploads']['bucket'] = nil
        gitlab_rails['object_store']['objects']['packages']['bucket'] = nil
        gitlab_rails['object_store']['objects']['dependency_proxy']['bucket'] = nil
        gitlab_rails['object_store']['objects']['terraform_state']['bucket'] = nil
        gitlab_rails['manage_backup_path'] = true
        gitlab_rails['backup_path'] = "/var/gitlab/backups"
        gitlab_rails['backup_archive_permissions'] = 0644
        gitlab_rails['backup_keep_time'] = 432000 
        git_data_dirs({
          "default" => {
          "path" => "/var/gitlab/data"
          }
        })
    ports:
      - '8090:80' # 端口号映射,服务器默认是80,这里建议先改成8080升级成功后再改回来。
    volumes: # 以下是在2.1中创建好的目录
      - '/data/gitlab/etc:/etc/gitlab'
      - '/data/gitlab/log:/var/log/gitlab'
      - '/data/gitlab/data:/var/gitlab/data'
      - '/data/gitlab/backups:/var/gitlab/backups'
    shm_size: '256m'

2.3 启动容器

docker-compose -f gitlab.yml up -d

查看运行情况

# docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                             PORTS                                   NAMES
222ae262217d        gitlab/gitlab-ee:13.4.3-ee.0   "/assets/wrapper"        17 seconds ago      Up 11 seconds (health: starting)   22/tcp, 443/tcp, 0.0.0.0:8090->80/tcp   gitlab

第一次启动比较慢,耐心等待几分钟。(这里作者等了8分钟)

等待过程中,可以使用以下命令查看容器的运行日志情况。

docker logs -f --tail 100 gitlab

这里有时间可以继续往下看,或者查看第四点先。

启动完成后在浏览器访问验证是否启动成功:http://127.0.0.1:8090

file

看到这里已经成功跑起来了,咱们先不着急登录,继续按照下面的步骤把恢复一下备份先。

三、还原备份文件

3.1 复制备份文件

1.1中备份好的文件复制到2.1中的目录:/data/docker/backups

cp 1705765212_2024_01_20_13.4.3-ee_gitlab_backup.tar /data/gitlab/backups/

这里复制过程也是比较漫长的,作者这里有几十个G的大小,耐心等待一下。

等待过程可以先跳到执行4.1 进行docker镜像下载。

3.2 执行还原

执行以下命令:

# 1.进入容器
docker exec -it gitlab /bin/bash

# 2.停止服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# 查看服务是否正常停止
sudo gitlab-ctl status |grep down
# down: puma: 57s, normally up; run: log: (pid 872) 2008s
# down: sidekiq: 1846s, normally up; run: log: (pid 899) 2003s

# 3.查看备份文件
cd /var/gitlab/backups
ls
# 1705765212_2024_01_20_13.4.3-ee_gitlab_backup.tar

# 4.执行还原,注意这里文件名不需要【_gitlab_backup.tar】
gitlab-rake gitlab:backup:restore BACKUP=1705765212_2024_01_20_13.4.3-ee
# Unpacking backup....

恢复过程还需要输入3次的yes,

之后还是继续漫长的等待····

3.3 还原验证

还原结束后,重启服务并检查是否正常。

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

最后登录进去查看各个仓库及功能是否正常。

至此,Gitlab迁移至docker 容器完成! 接下来进行升级操作。

四、版本升级

首先,版本是不能一步到位升级上去的。 需要遵循小版本逐步升级,官方提供升级路径,输入你当前的版本号就可以了。Upgrade Path (gitlab-com.gitlab.io)

例如作者这里的是13.4.7 ,选择升级方式为docker,官方给出的结果是这样的。

file

4.1 镜像下载

我们把官网的升级路径做成一个脚本文件,先把容器镜像先下载下来。

vim gitlab-docker.sh

#!/bin/bash
docker pull gitlab/gitlab-ee:13.8.8-ee.0
docker pull gitlab/gitlab-ee:13.12.15-ee.0
docker pull gitlab/gitlab-ee:14.0.12-ee.0
docker pull gitlab/gitlab-ee:14.3.6-ee.0
docker pull gitlab/gitlab-ee:14.9.5-ee.0
docker pull gitlab/gitlab-ee:14.10.5-ee.0
docker pull gitlab/gitlab-ee:15.0.5-ee.0
docker pull gitlab/gitlab-ee:15.4.6-ee.0
docker pull gitlab/gitlab-ee:15.11.13-ee.0
docker pull gitlab/gitlab-ee:16.1.6-ee.0
docker pull gitlab/gitlab-ee:16.3.7-ee.0
docker pull gitlab/gitlab-ee:16.7.3-ee.0
docker pull gitlab/gitlab-ee:16.8.0-ee.0

4.2 逐一升级

首先,停止容器。

docker-compose -f gitlab.yml stop

然后修改gitlab.yml 的容器版本

version: '3.6'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:13.8.8-ee.0'  # 根据上面的版本号顺序逐一修改
# ... 这里省略其他....

附:从13.4.7版本升级到16.8.0版本过程版本

13.8.8 => 13.12.15 => 14.0.12 => 14.3.6 => 14.9.5 => 14.10.5 => 15.0.5 => 15.4.6 => 15.11.13 => 16.1.6 => 16.3.7 => 16.7.3 => 16.8.0

重启容器

docker-compose -f gitlab.yml up -d

# 看看容器日志有没有什么异常或报错
docker logs -f -t --tail 100 gitlab

特别注意:一定要留意后台迁移任务是否都已经执行完毕,只有全部执行完毕后才能继续操作。

查看后台迁移状态地址:http://127.0.0.1:8090/admin/background_migrations

后台迁移状态

等待升级完成后,进入系统查看功能是否正常。正常后依此类推,重复以上操作即可。

4.3 定时备份

docker-compose 跑的 GitLab 如果需要用 crontab 方式来进行备份的话,docker-compose exec 后面记得加 -T:

-T 为不分配 TTY,如果不加的话,利用 crontab 来运行会报: the input device is not a TTY
docker-compose exec -T gitlab gitlab-backup create

Jenkins 脚本命名行

清理构建历史

1、删除 历史构建


//项目名称
def jobName = "you-job-name"
//删除小于等于64的构建历史
def maxNumber = 40
Jenkins.instance.getItemByFullName(jobName).builds.findAll {
  it.number <= maxNumber
}.each {
  it.delete()
}

2、清空所有构建

//项目名称
def jobName = "geostar-xuncha-portal-fat"
def item = Jenkins.instance.getItemByFullName(jobName);
item.builds.each {
  it.delete()
}
// 更新构建Number
item.updateNextBuildNumber(1)

git 常用命令

  • git 设置提交用户
git config user.name "yourname"
  • git 保存用户密码
git config credential.helper store
  • git 查看配置

git config -l

GitHub上的图片显示不出来解决方法

原因是被墙了,在Host文件中添加一下映射就行。


# GitHub Start 
140.82.113.3      github.com
140.82.114.20     gist.github.com

151.101.184.133    assets-cdn.github.com
151.101.184.133    raw.githubusercontent.com
151.101.184.133    gist.githubusercontent.com
151.101.184.133    cloud.githubusercontent.com
151.101.184.133    camo.githubusercontent.com
151.101.184.133    avatars0.githubusercontent.com
199.232.68.133     avatars0.githubusercontent.com
199.232.28.133     avatars1.githubusercontent.com
151.101.184.133    avatars1.githubusercontent.com
151.101.184.133    avatars2.githubusercontent.com
199.232.28.133     avatars2.githubusercontent.com
151.101.184.133    avatars3.githubusercontent.com
199.232.68.133     avatars3.githubusercontent.com
151.101.184.133    avatars4.githubusercontent.com
199.232.68.133     avatars4.githubusercontent.com
151.101.184.133    avatars5.githubusercontent.com
199.232.68.133     avatars5.githubusercontent.com
151.101.184.133    avatars6.githubusercontent.com
199.232.68.133     avatars6.githubusercontent.com
151.101.184.133    avatars7.githubusercontent.com
199.232.68.133     avatars7.githubusercontent.com
151.101.184.133    avatars8.githubusercontent.com
199.232.68.133     avatars8.githubusercontent.com
# GitHub End

nexus3 启动失败, Cannot open local storage 解决方法

nexus oss 3 一直运行得没什么问题,忽然发现运行特别慢然后到服务器去重启,莫名其妙一直启动失败,查看日志发现如下报错信息:

2021-05-24 08:09:50,048+0000 ERROR [FelixStartLevel]  *SYSTEM org.sonatype.nexus.extender.NexusContextListener - Failed to start nexus
com.orientechnologies.orient.core.exception.OStorageException: Cannot open local storage '/nexus-data/db/component' with mode=rw
        DB name="component"
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:323)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:259)
        at org.sonatype.nexus.orient.DatabaseManagerSupport.connect(DatabaseManagerSupport.java:178)
        at org.sonatype.nexus.orient.DatabaseManagerSupport.createInstance(DatabaseManagerSupport.java:312)
        at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
        at org.sonatype.nexus.orient.DatabaseManagerSupport.instance(DatabaseManagerSupport.java:289)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
        at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:401)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734)
        at java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
        at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:650)
        at org.sonatype.nexus.orient.restore.RestoreServiceImpl.doStart(RestoreServiceImpl.java:76)
        at org.sonatype.nexus.common.stateguard.StateGuardLifecycleSupport.start(StateGuardLifecycleSupport.java:67)
        at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39)
        at org.sonatype.nexus.common.stateguard.StateGuard$TransitionImpl.run(StateGuard.java:193)
        at org.sonatype.nexus.common.stateguard.TransitionsInterceptor.invoke(TransitionsInterceptor.java:56)
        at org.sonatype.nexus.extender.NexusLifecycleManager.startComponent(NexusLifecycleManager.java:199)
        at org.sonatype.nexus.extender.NexusLifecycleManager.to(NexusLifecycleManager.java:111)
        at org.sonatype.nexus.extender.NexusContextListener.moveToPhase(NexusContextListener.java:304)
        at org.sonatype.nexus.extender.NexusContextListener.frameworkEvent(NexusContextListener.java:201)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1429)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: null
        at com.orientechnologies.orient.core.storage.impl.local.paginated.wal.ODiskWriteAheadLog.cutTill(ODiskWriteAheadLog.java:919)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.makeFullCheckpoint(OAbstractPaginatedStorage.java:3706)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.recoverIfNeeded(OAbstractPaginatedStorage.java:3937)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:288)
        ... 30 common frames omitted

一开始以为是/nexus-data/db/component 的权限问题,但一直以来启动都没有问题,重新设置 777 权限后仍然没有效果。

解决方法

最后在网上找到了解决方法:把 /nexus-data/db/component 下的出现 0字节wal文件全部删掉,重新启动即可!!

docker 安装SSH

首先,docker并不是虚拟机,一般并不存在用户访问控制,但有些时候想让用户通过密码才能访问虚拟集命令行,则可以通过ssh连接来实现。

但有个前提就是不能让用户直接接触宿主机,因为使用docker execdocker cp等,是可以不需密码直接访问docker内部文件。

下面开始正文为python-slim镜像配置ssh访问

为debian python 镜像安装sshd

启动docker image时可以指定端口映射 docker run -ditp 23:22 [imageID]

安装过程

#!/bin/bash
# 更新安装源
cd /etc/apt/
mv sources.list sources.list.backup
echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" > sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> sources.list
echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> sources.list
echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> sources.list
echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> sources.list
echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> sources.list
# 更新软件源
apt-get update
# 安装SSHD
apt-get install openssh-server -y
# 安装完成后启动服务
service ssh start
# 查看是否启动成功
ps -e
# 看看是否出现sshd
# 配置SSH
vim /etc/ssh/sshd_config
# 修改允许root登录
PermitRootLogin yes
# 重启ssh服务
/etc/init.d/ssh restart

# 修改root用户
passwd root

生成docker镜像

配置好环境后,生成自己的镜像文件

# docker commit [容器ID] [名称]:[版本]
docker commit 42ee9eb65dcb jenkins-ssh:1.0

docker 配置开机自动启动脚本

配置脚本

#!/bin/bash
/etc/init.d/ssh start
java -jar /usr/share/jenkins/jenkins.war

配置docker文件


version: '3'
services:
    jenkins:
        hostname: jenkins
        container_name: jenkins-java
        image: jenkins-ssh:1.0
        restart: always
        privileged: true
        user: root
        command: /bin/bash /var/jenkins_home/run.sh
        ports:
            - "8083:8080"
            - "23:22"
        volumes:
            - /data/docker/jenkins-java/:/var/jenkins_home

参考链接:https://blog.csdn.net/xzl9811wl/article/details/107060382

centos 升级PHP版本到7.3

服务器PHP版本从7.2升级到7.3过程,其实只需要很简单的步骤

  • 停止PHP服务
  • 移除旧版PHP
  • 设置新版本rpm库
  • 下载安装新版并重启服务

移除旧版

# 停止当前服务
systemctl stop php-fpm
# 停止Nginx服务
systemctrl stop nginx
# 查看已安装的PHP版本
yum list installed |grep php

查看已安装的版本

请务必找个地方记录已经安装的模块

后续重新安装的时候也要把这些模块安装上

[root@long ~]# yum list installed |grep php
Failed to set locale, defaulting to C
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
mod_php72w.x86_64                   7.2.17-1.w7                        @webtatic
php72w-cli.x86_64                   7.2.32-1.w7                        @webtatic
php72w-common.x86_64                7.2.32-1.w7                        @webtatic
php72w-devel.x86_64                 7.2.32-1.w7                        @webtatic
php72w-fpm.x86_64                   7.2.32-1.w7                        @webtatic
php72w-gd.x86_64                    7.2.32-1.w7                        @webtatic
php72w-mbstring.x86_64              7.2.32-1.w7                        @webtatic
php72w-mysqlnd.x86_64               7.2.32-1.w7                        @webtatic
php72w-pdo.x86_64                   7.2.32-1.w7                        @webtatic
php72w-xml.x86_64                   7.2.32-1.w7                        @webtatic

移除版本

# 移除所有PHP
yum remove php*
# 查看是否清除干净了
yum search php

安装新版

# EPEL源
yum install epel-release

# REMI源,centos7的使用下面的地址,其他版本自行去官网查看
# 这里下载的时候会很慢,要耐心等待,如果下载不了就要自行找镜像了
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# 更新一下库
yum update

# Yum 源工具
yum install yum-utils

# 查看是否有出现php73的版本了
yum search php73

# 如果出现这样的说明Yum还是没有设置正确,需要重新设置一下
[root@long ~]# yum search php73
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
 * base: mirrors.cloud.aliyuncs.com
 * extras: mirrors.cloud.aliyuncs.com
 * updates: mirrors.cloud.aliyuncs.com
 * webtatic: us-east.repo.webtatic.com
Warning: No matches found for: php73
No matches found

开始安装

装回上面记录已经卸载的版本

yum install -y php73-php-fpm php73-php-cli php73-php-bcmath php73-php-gd php73-php-json php73-php-mbstring php73-php-mcrypt php73-php-mysqlnd php73-php-opcache php73-php-pdo php73-php-pecl-crypto php73-php-pecl-mcrypt php73-php-pecl-geoip php73-php-recode php73-php-snmp php73-php-soap php73-php-xml

重启服务

# 默认安装后的命令叫php73,我们需要改为php,这样composer才能正常工作
cp /usr/bin/php73 /usr/bin/php

# 查看PHP版本
php -v

# 重启服务
systemctl enable php73-fpm
systemctl start php73-fpm
systemctrl start nginx

最后查看自己的PHP程序是否都正常了

服务器空间清理

服务器空间爆满的时候,要清理一些垃圾文件,以下整理常用的操作。

查看磁盘空间占用情况命令

cd /
# -h 友好的文件大小展示
# -d 1 扫描深度 1 表示只扫描当前目录下的大小
du -hd 1

会显示以下结果

4.0K    ./mnt
35M ./opt
0   ./sys
4.0K    ./media
40M ./etc
147M    ./boot
16K ./lost+found
4.0G    ./usr
0   ./proc
0   ./dev
23G ./var
9.2M    ./run
4.0K    ./data
1.2G    ./root
4.0K    ./srv
6.5M    ./tmp
46G .

排查过程:一步步查看占用空间比较大的目录,逐一击破。

Docker 垃圾文件清理

移除没有使用的镜像

docker image prune

检查Volumn占用情况

有些已经删除的容器残留下来的Volumn

# 查看卷
$ docker volume ls

DRIVER              VOLUME NAME
local               179a41a06fd1846903f09af979347c35dca7eabdd33f2a2a323e694011013b48
local               3fd4c3dce22b080e45234a13ba80492370e4a1db0ba9fd4992f9ef80e1254d33
local               5964c9d8a7ac6623b4cf629448b33a4ebdf99ada7b867f4d76f93998d9db6767
local               5b8a1d868aabaa35628f1ff36879b465b20eccab891f27672f9a3fa5147b6d49
local               5ff014d431df3144a0ab5b7c58bf4c3e5efd7a0313d31f2f6b473cb1eef38139

# 移除没有使用的
$ docker volume prune

Deleted Volumes:
5b8a1d868aabaa35628f1ff36879b465b20eccab891f27672f9a3fa5147b6d49
5ff014d431df3144a0ab5b7c58bf4c3e5efd7a0313d31f2f6b473cb1eef38139
65cb3e5ea0f8e24010c59d89fb02e75b19c3f2927fcc834bbaf48a1bb6c4b160
cbbca6df34a0ec0182e6682c87e21a31e0b21c980aa0f4297618d8cb5693872f
e21b0c710c575977a48f13f87b08ef2dd3f4037818332f1b09e71ffb4cd6ed37
179a41a06fd1846903f09af979347c35dca7eabdd33f2a2a323e694011013b48
3fd4c3dce22b080e45234a13ba80492370e4a1db0ba9fd4992f9ef80e1254d33
5964c9d8a7ac6623b4cf629448b33a4ebdf99ada7b867f4d76f93998d9db6767

Total reclaimed space: 8.489 GB

CentOS 命令

防火墙

开启防火墙

systemctl start firewalld

开启端口号

firewall-cmd --zone=public --add-port=80/tcp --permanent

  • –zone #作用域
  • –add-port=80/tcp #添加端口,格式为:端口/通讯协议
  • –permanent #永久生效,没有此参数重启后失效

查看端口号

firewall-cmd --list-ports

重启防火墙

firewall-cmd --reload

文件操作

删除文件夹

rm -rf youdir

解压ZIP

yum install zip unzip

unzip filename

SSH 复制文件

scp LocalFile UserName@RemoteIP:RemoteFile

VIM常用命令

  • dd:剪切当前行
  • yy:复制当前行
  • nyy:n表示大于1的数字,复制n行

其他常用命令

route -n 查看路由
ifconfig 查看IP
cat /etc/sysconfig/network-scripts/ifcfg-ens33 查看IP配置

Windows VMware 安装CentOS7

安装系统

镜像下载:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/

本文使用的是CentOS-7-x86_64-Minimal-2009.iso 无界面版本

安装过程:
1、安装时选择自动分区
2、一定要设置用户名和密码,还有root用户

此处省略其他安装过程···

系统配置

网络配置

按安装好后无法访问网络,需要手动设置DNS,主要修改ONBOOT=yesDNS1=114.114.114.114

cd /etc/sysconfig/network-scripts/
vi ifcfg-ens32                      # 这里有可能不一样根据自己文件,ifcfg-ens开头的

TYPE=Ethernet                    # 网卡类型:为以太网
PROXY_METHOD=none                # 代理方式:关闭状态
BROWSER_ONLY=no                  # 只是浏览器:否
BOOTPROTO=dhcp                   # 网卡的引导协议:DHCP
DEFROUTE=yes                 # 默认路由:是 
IPV4_FAILURE_FATAL=no             # 是不开启IPV4致命错误检测:否
IPV6INIT=yes                 # IPV6是否自动初始化: 是
IPV6_AUTOCONF=yes               # IPV6是否自动配置:是
IPV6_DEFROUTE=yes               # IPV6是否可以为默认路由:是
IPV6_FAILURE_FATAL=no             # 是不开启IPV6致命错误检测:否
IPV6_ADDR_GEN_MODE=stable-privacy       # IPV6地址生成模型:stable-privacy 
NAME=ens33                  # 网卡物理设备名称
UUID=42773503-99ed-443f-a957-66dbc1258347   # 通用唯一识别码
DEVICE=ens33                 # 网卡设备名称
ONBOOT=yes                  # 是否开机启动, 可用systemctl restart network重启网络
DNS1=114.114.114.114

systemctl restart network 重启网络服务

固定IP地址配置

我们在开发使用过程中需要用SSH来连接,虚拟机最好是固定一个IP地址,过程如上,修改ifcfg-ens32配置信息如下:

ifconfig 先查看自己获取的动态IP是多少,然后再修改。

BOOTPROTO="static"                # 静态获取
# 以下的IP地址根据自己分配的VMware地址来确定
IPADDR="172.24.60.126"
NETMASK="255.255.240.0"
GATEWAY="172.24.48.1"
DNS1="223.5.5.5"
DNS2="114.114.114.114"

yum源的配置

cd /etc/yum.repo s.d/
# 备份当前的配置
mkdir backup
mv *.repo ./backup
# 拉取阿里云镜像包
curl http://mirrors.aliyun.com/repo/Centos-7.repo -o Centos-7-aliyun.repo
yum clean all # 清空缓存
yum makecache # 生成缓存

yum的下载速度飞起了

安装VmwareTool

官方文档:https://docs.vmware.com/cn/VMware-Workstation-Pro/16.0/com.vmware.ws.using.doc/GUID-08BB9465-D40A-4E16-9E15-8C016CC8166F.html

1、在菜单栏点击虚拟机安装VMwareTool

file

2、整合整个安装过程

yum -y install perl gcc make kernel-headers kernel-devel # 安装Perl
reboot #重启
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /tmp/
tar zxpf /mnt/cdrom/VMwareTools # 这里按Tab 自动补全当前的版本
cd /tmp/vmware-tools-distrib/   # 解压的目录
./vmware-install.pl # 接下来的提示全部按回车

开启文件共享

首先在虚拟机中配置文件夹共享

file

挂载文件夹

cd /mnt
mkdir rae # 这个是共享文件夹的名称,名字随便起
vmware-hgfsclient #查看共享
vmhgfs-fuse .host:/SharedFolder /mnt/rae # 挂载:物理机的SharedFolder文件挂载到虚拟机的rae目录中

自动挂载

vi /etc/fstab
.host:/SharedFolder /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0
mount -a

开启SSH

参考文章:https://www.cnblogs.com/ZeroSunny/p/14900454.html

yum install net-tools #网络工具netstate

免密登录:将本机的公钥复制到虚拟机的~/.ssh/authorized_keys ,修改权限:

chmod 700 .sshchmod 600 authorized_keys

问题总结

Nginx出现目录访问权限问题
关闭SELINUX: vim /etc/selinux/config 修改:SELINUX=disabled

docker端口无法访问
打开IP端口转发: sysctl -w net.ipv4.ip_forward=1