ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装
系统安装
下载CentOS系统制作系统U盘
官网地址:阿里云镜像下载Centos7最小化安装版本
参考教程:老旧笔记本电脑变服务器(笔记本电脑+内网穿透)
下载ULtralSO:ULtralSO
遇到问题:
- 问题:。。。。参考解决方案:
- 问题:。。。。参考解决方案:
笔记本电源设置
系统默认屏保时间为5分钟
关闭屏保:setterm -blank 0
// 实际上是指设定屏保时间为0分钟
设置屏保:setterm -blank 10
// 设置屏保时间为10分钟
关闭休眠: vim /etc/systemd/logind.conf
设置 HandleLidSwitch=lock
- 找到配置文件
vim /etc/systemd/logind.conf
[Login]
...
#默认值
#HandleLidSwitch=suspend
#修改后
HandleLidSwitch=lock
...
- 修改配置文件
HandleLidSwitch=lock
HandlePowerKey 按下电源键后的行为,默认power off
HandleSleepKey 按下挂起键后的行为,默认suspend
HandleHibernateKey 按下休眠键后的行为,默认hibernate
HandleLidSwitch 合上笔记本盖后的行为,默认suspend
3.使配置文件生效
systemctl restart systemd-logind
网络设置
WiFi类型查看验证设置联网
- 查看是否需要安装固件:
dmesg | grep firmware
- 查看无线网口:
iw dev
Interface 后面即为无线网络接口的名称 - 通过ip命令进行查看:
ip addr
注意state 状态是否UP - 不是UP需要激活无线网络接口:
ip link set 无线网卡名称 up
- 检验网口是否激活:
ip link show 无线网卡名称
- 查看无线网络连接情况:
iw 无线网卡名称 link
如果已连接会显示SSID:WiFi名称 - 无连接时,扫描可连接的WiFi :
iw 无线网卡名称 scan | grep SSID
显示WiFi名称 - wireless-tools和wpa_supplicant,由于我本机是自带wpa_supplicant的,连接指定的SSID无线路由:
wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase "WiFi名称" "WiFi密码")
注意保留引号 - 用dhcp获得IP分配 :
dhclient 无线网卡名称
- 查看IP,验证WiFi连接:
ip addr show 无线网卡名称
- 再次查看无线网络连接情况:
iw 无线网卡名称 link
显示connected to 说明已经连接成功
wpa_supplicant介绍:WPA是WiFi Protected Access的缩写,中文含义为“WiFi网络安全存取”。wpa_supplicant是一个开源项目,已经被移植到Linux,Windows以及很多嵌入式系统上。它是WPA的应用层认证客户端,负责完成认证相关的登录、加密等工作
-B指的是使用守护进程在后台执行这个是必须的选项。
-c(小写)指定是使用配置文件:/etc/wpa_supplicant/wpa_supplicant.conf,如果不带配置文件就用这条命令 <(wpa_passphrase "$SSID" "$password") ,把文件作为命令输入。
-i 指的是接口名称,也就是wlp3s0无线网卡了。
- 在上面的操作中已经成功连接WiFi了,但是wpa_supplicant还没有重启、断线自动连接能力,自动连接就需要使用NetworkManager工具,机器本身带有可使用nmcli命令
NetworkManager是RedHat(红帽组织,传送门:https://www.redhat.com/en)开发的一个项目,由一个管理系统网络连接、并且将其状态通过D-BUS(是一个提供简单的应用程序 互相通讯的途径的自由软件项目,它是作为freedesktoporg项目的一部分来开发的。)进行报告的后台服务,以及一个允许用户管理网络连接的客户端程序。优点是:带有GUI工具界面,能大大简化网络连接
- 使用NetworkManager管理WiFi,扫描WiFi:
nmcli dev wifi
发现没有设备,这里就有个问题,前面我们是通过wpa_supplicant连接的,这里再用NetworkManager连接就会产生冲突,所以这里我们先重启下network,以便让wap_supplicant的连接失效,然后再操作NetworkManager连接WiFi - 重启网络:
service network restart
- 重新连接WiFi:
nmcli dev wifi connect $SSID password $password
SSID:WiFi名称,password:WiFi密码 - 查看网络连接:
nmcli conn
[root@localhost network-scripts]# nmcli conn
NAME UUID TYPE DEVICE
enp0s25 91ebba6a-608d-4eab-a4d6-1cd078f2d147 ethernet --
TP-LINK a12245a9-fea6-426c-aa55-19ad83d75da5 wifi --
- 根据UUID来管理WiFi
nmcli c down UUID //停用WiFi
nmcli c up UUID //启用WiFi
nmcli c delete UUID //删除WiFi
- 设置开机自动连接:
nmcli con mod WiFi名称 connection.autoconnect yes
设置固定IP
- 按刚才nmcli命令显示的网络名字找到配置文件:
ls /etc/sysconfig/network-scripts/
- 里面ifcfg开头的ifcfg-en的是以太网网卡, ifcfg-wl的是无线网网卡,或者是连接过后的以 ifcfg-WiFi名称的是无线网卡的配置文件
- 编辑对应的以网卡名称的配置文件,例如:
vim /etc/sysconfig/network-scripts/ifcfg-enp0s25
是编辑我的以太网配置文件,因为我用无线,所以我要把以太网关闭
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
#要把是否默认网卡设置为no
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s25
UUID=91ebba6a-608d-4eab-a4d6-1cd078f2d147
DEVICE=enp0s25
ONBOOT=no
- 修改无线网卡配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-TP-LINK_GUIBIN
HWADDR=3C:79:1A:FE:93:F4
ESSID=TP-LINK
MODE=Managed
KEY_MGMT=WPA-PSK
MAC_ADDRESS_RANDOMIZATION=default
#网络类型
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
##设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp开启DHCP服务
BOOTPROTO=static
#默认网卡
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=TP-LINK
UUID=b11785a9-fas6-426c-aa77-jhh
#设置为yes,开机自动启用网络连接
ONBOOT=yes
IPV6_PRIVACY=no
#以下是增加的参数
IPADDR=192.168.0.103 #固定IP
PREFIX=24 #子网掩码
GATEWAY=192.168.0.1 #网关地址
主要修改如下参数
BOOTPROTO="none" # 设为none或static,表示静态
DEFROUTE="yes" # 默认路由
ONBOOT="yes" #开机启动
IPADDR="192.168.59.27" #ip地址
PREFIX="24" # 子网掩码
GATEWAY="192.168.59.2" #网关
#DNS1="114.114.114.114" #dns
- 如果ping www.baidu.com不能访问,需要配置DNS服务器地址,常用dns地址为114.114.114.114,也可使用其他如 8.8.8.8 或 其他dns服务器地址,直接将 nameserver 114.114.114.114 添加到/etc/resolv.conf
安装MySQL数据库
卸载系统自带的Mariadb
- 查看是否有该软件:
rpm -qa | grep mariadb
- 存在执行卸载:
rpm -e postfix-2.10.1-7.el7.x86_64
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64
#或者
yum remove 'mariadb'
下载安装设置MySQL
- 下载MySQL8.0:
wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
- 安装MySQL8.0 RPM:
yum -y install mysql80-community-release-el7-7.noarch.rpm
- 安装MySQL8.0 服务:
yum -y install mysql-community-server
- 后续操作按照【不为码农的码农】的博客链接: https://blog.csdn.net/weixin_45351743/article/details/114288181
安装Docker
安装前环境检查
- 检查是否已经安装有旧版本:
rpm -qa | grep docker
- 查看有没有yum 仓库管理 yum-config-manager 工具包:
rpm -qa | grep yum-utils
yum-config-manager 是 yum 仓库管理命令
yum-config-manager 命令的本质是对 /etc/yum.repos.d/(库数据的储存位置)
文件夹下文件的增删查改,推荐使用 yum-config-manager 命令进行改动
# yum repolist all # 显示所有资源库
# yum repolist enabled # 显示所有已启动的资源库
# yum repolist disabled # 显示所有被禁用的资源库
# yum repolist all | grep xxx # 可搭配grep使用
# yum-config-manager --add-repo repository_url # 添加 repository
# 切换库中资源----禁用+启用
# yum-config-manager --disable itemName
# yum-config-manager --enable itemName
# 等同于直接编辑 /etc/yum.repos.d/ 下的对应资源库文件
enabled=0 # 禁用
enabled=1 # 启用
- 如果没有安装执行:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖 - 设置docker资源库repository:
中央仓库
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
阿里仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
执行安装Docker
- 查看可用版本:
yum list docker-ce --showduplicates | sort -r
- 选择版本并安装:
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动Docker:
systemctl start docker
设置开机自启systemctl enable docker
Docker主要的路径:
/var/lib/docker 默认数据目录
/etc/docker/daemon.json 默认配置文件
/usr/lib/systemd/system/docker.service
Docker主要命令
Docker环境信息 info、version
镜像仓库命令 login、logout、pull、push、search
镜像管理 build、images、import、load、rmi、save、tag、commit
容器生命周期管理 create、exec、kill、pause、restart、rm、run、start、stop、unpause
容器运维操作 attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update
容器资源管理 volume、network
系统信息日志 events、history、logs
1.events打印容器的实时系统事件
2.history 打印出指定镜像的历史版本信息
3.logs打印容器中进程的运行日志
docker --help #查看docker命令
docker info #docker 详细信息,镜像和容器
docker version #查看docker版本
帮助文档地址:https://docs.docker.com/reference/
镜像相关命令
docker images -a #列出本地所有的镜像
docker images -q #只显示镜像ID
docker images --digests #显示镜像的摘要信息
docker images --no-trunc #显示完整的镜像信息
---
docker search tomcat # 从Docker Hub上查找tomcat镜像
docker search --filter=stars=300 tomcat #从Docker Hub上查找关注度大于300的tomcat镜像
---
docker pull tomcat #从Docker Hub上下载tomcat镜像,默认是最新版本。等价于:docker pull tomcat:latest
docker pull tomcat:8 # 选择指定版本下载
---
#单个镜像删除,相当于:docker rmi java:latest
docker rmi java
#强制删除(删除正在运行的镜像,注:以后台方式运行的不能被强制删除)
docker rmi -f java
#多个镜像删除,不同镜像间以空格间隔
docker rmi -f java tomcat nginx
#删除本地全部镜像
docker rmi -f $(docker images -q)
容器相关命令
# 查看正在运行的容器
docker ps
# 查看所有容 包括停止的容器
docker ps -a
# -q参数,只显示container id
docker ps -q
# 查看容器详细信息
docker inspect entry_nginx
---
#新建并启动容器,参数:-i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;--name 为容器指定一个名称
docker run -i -t --name entry_nginx 镜像名称/镜像ID
#后台启动容器,参数:-d 已守护方式启动容器
docker run -d entry_nginx
#启动止容器
docker start 容器id
# 重启容器
docker restart 容器id
# 关闭容器
docker kill 容器id
docker stop 容器id
# 删除容器
docker rm 容器id
---
-u 指定用户
-d 创建一个后台运行容器
-t 参数让Docker分配一个伪终端并绑定到容器的标准输入上
-i 参数则让容器的标准输入保持打开。
-c 参数用于给运行的容器分配cpu的shares值
-m 参数用于限制为容器的内存信息,以 B、K、M、G 为单位
-v 参数用于挂载一个volume,可以用多个-v参数同时挂载多个volume
-p 参数用于将容器的端口暴露给宿主机端口 格式:host_port:container_port 或者 host_ip:host_port:container_port
--name 容器名称
--net 容器使用的网络
--privileged=true 与-u root配合使用,开启root权限,默认false,指定用户后需要设置true
---
#使用run方式在创建时进入
docker run -itd -u root \
--privileged=true \
--restart=always \
--name 容器名称 \
--net=自定义网络 \
-p 物理机目录:容器目录 \
-v /etc/localtime:/etc/localtime \
-v /var/run/docker.sock:/var/run/docker.sock \
镜像名称:镜像版本 \
init
----
#关闭容器并退出
exit
#仅退出容器,不关闭
快捷键:Ctrl + P + Q
快捷键:Ctrl + Shift + P + Q
---
#top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
#列出redis容器中运行进程
docker top tomcat
#查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
---
# 查看redis容器日志,默认参数
docker logs tomcat
# 查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
# 查看容器redis从2021年08月10日后的最新10条日志。
docker logs --since="2021-08-10" --tail=10 redis
---
# 容器内拷贝文件到主机
docker cp 容器id:容器内路径 目的主机路径
Docker 安装 Nginx
- 拉取最新镜像:
docker pull nginx
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
3f4ca61aafcd: Pull complete
50c68654b16f: Pull complete
3ed295c083ec: Pull complete
40b838968eea: Pull complete
88d3ab68332d: Pull complete
5f63362a3fa3: Pull complete
Digest: sha256:0047b729188a15da49380d9506d65959cce6d40291ccfb4e039f5dc7efd33286
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
- 查看镜像:
docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 1403e55ab369 2 weeks ago 142MB
- 以此镜像创建启动一个容器:
docker run --name entry_nginx -p 8080:80 -d nginx
[root@localhost ~]# docker run --name entry_nginx -p 8080:80 -d nginx
094e0d773d7f47c2f5b8c696f9a8ce3c839135f371b10d64dc35a5d19227e248
#参数解释:
--name entry_nginx 创建一个名字为entry_nginx容器
-p 8080:80 把主机8080端口映射到容器内部80端口
-d 后台运行容器,并返回容器ID,不加这个参数,当退出容器时,容器也停止
nginx 镜像名称
另外的方式创建启动进入组合:docker run -itd --name entry_nginx -p 8080:80 --privileged=true nginx init
-i:以交互模式运行容器,通常与 -t 同时使用。
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
–privileged:默认是false,设置true,该参数让容器中的root拥有真正的root权限,否则容器的root用户只是宿主机的一个普通用户权限,有些命令如:systemctl、service是使用不了的。
init :赋值给容器真正的root权限生效,使用/bin/bash是不会生效的
- 查看刚运行启动的容器 :
docker ps
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
094e0d773d7f nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp entry_nginx
- 进入容器内部:
docker exec -it 094e0d773d7f /bin/bash
[root@localhost ~]# docker exec -it 094e0d773d7f /bin/bash
root@094e0d773d7f:/# cd /var/log
root@094e0d773d7f:/var/log# ls
apt btmp dpkg.log faillog lastlog nginx wtmp
root@094e0d773d7f:/var/log# exit 退出容器
exit
[root@localhost ~]#
- 验证测试容器:http://192.168.0.103:8080/ 本人是在台式机局域网通过xshell连接的centos上边有教程,所有操作都是连续的,所以打开台式机Chrome浏览器访问结果如下就正常了,而且我改了容器中/usr/share/nginx/html/index.html文件,所以最后会显示Thank you for using nginx
AIguibin
. 没有的不是问题。
- 然后才是核心内容进行主机容器挂载
使用mkdir命令创建如下对应的目录或文件
/usr/share/nginx/html 静态文件路径
/etc/nginx/nginx.conf 配置文件路径
/var/log/nginx 日志文件路径
/etc/nginx/conf.d 配置文件路径
比如我的:
mkdir -p /usr/etc/docker/entrynginx 配置文件目录
mkdir -p /usr/share/docker/entrynginx 静态文件目录
mkdir -p /var/log/docker/entrynginx 日志文件目录
touch /usr/etc/docker/entrynginx/nginx.conf 主配置文件
- 然后使用命令把容器的文件Copy一份出来放到指定位置
#将容器nginx.conf文件复制到宿主机
docker cp entry_nginx:/etc/nginx/nginx.conf /usr/etc/docker/entrynginx/nginx.conf
#将容器conf.d文件夹下内容复制到宿主机
docker cp entry_nginx:/etc/nginx/conf.d /usr/etc/docker/entrynginx
#将容器中的html文件夹复制到宿主机
docker cp entry_nginx:/usr/share/nginx/html /usr/share/docker/entrynginx
#将容器中日志文件夹复制到宿主机
docker cp entry_nginx:/var/log/nginx /var/log/docker/entrynginx
- 停止运行的容器:
docker stop 094e0d773d7f
- 删除已停止的旧容器 :
docker rm -f 094e0d773d7f
[root@localhost ~]# docker stop 094e0d773d7f
094e0d773d7f
[root@localhost ~]# docker rm -f 094e0d773d7f
094e0d773d7f
[root@localhost ~]#
- 重新创建一个新的容器并启动:
docker run -p 8080:80 --name entry_nginx -v /usr/etc/docker/entrynginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/etc/docker/entrynginx/conf.d:/etc/nginx/conf.d -v /var/log/docker/entrynginx/nginx:/var/log/nginx -v /usr/share/docker/entrynginx/html:/usr/share/nginx/html -d nginx
docker run -p 8080:80 --name entry_nginx \
-v /usr/etc/docker/entrynginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/etc/docker/entrynginx/conf.d:/etc/nginx/conf.d \
-v /var/log/docker/entrynginx/nginx:/var/log/nginx \
-v /usr/share/docker/entrynginx/html:/usr/share/nginx/html \
-d nginx
###其他参数已解释###
-v 宿主机目录 : 容器内部目录
###这里说下 -v ###
这样创建启动的容器文件就是通的,在容器内或宿主机上改动的文件都可以被访问到。
Docker 安装 MavenNexus
- 查找选择镜像:
docker search nexus
[root@localhost ~]# docker search nexus
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
sonatype/nexus3 Sonatype Nexus Repository Manager 3 1192
sonatype/nexus Sonatype Nexus 451 [OK]
sonatype/nexus-iq-server Sonatype Nexus IQ Server 23
nexusnetsoft/shopware-app 1
nexusjpl/collection-manager 1
nexusstats/nexus-stats 1
openebs/mayastor-agent-ha-cluster Mayastor control plane agent - Nexus HA cont… 0
nexusjpl/cassandra 0
nexusera/influx 0
- 拉取镜像:
docker pull sonatype/nexus3
[root@localhost ~]# docker pull sonatype/nexus3
Using default tag: latest
latest: Pulling from sonatype/nexus3
1d6f30850896: Pull complete
aab8c43e0113: Pull complete
96aad52479aa: Pull complete
358891db5285: Pull complete
9bab53693647: Pull complete
2eecf5e36ccf: Pull complete
ff235d7bb08a: Pull complete
Digest: sha256:0fa03fff509aa018d9c981434f8bce5014f1253ecdcad637e1cb9ac9cdacc760
Status: Downloaded newer image for sonatype/nexus3:latest
docker.io/sonatype/nexus3:latest
- 创建启动运行容器:
docker run -d -p 18081:8081 --name aiguibin_nexus -v /usr/local/docker/nexus/data:/var/nexus-data --restart=always sonatype/nexus3
###换行方式###
docker run -d -p 18081:8081 --name aiguibin_nexus \
-v /usr/local/docker/nexus/data:/var/nexus-data \
--restart=always sonatype/nexus3
- 进入容器查看初始密码:
docker exec -it 7a3fcd26c5b8 /bin/bash
[root@localhost /]# docker exec -it 7a3fcd26c5b8 /bin/bash
bash-4.4$ cat /nexus-data/admin.password
531c2209-f55c-444b-b300-574afda80584
bash-4.4$
- 登陆Maven Nexus:
http://192.168.0.103:18081/
输入初始密码登录后,按照提示修改密码
使用默认的仓库就可以使用了,如在pom文件中使用
http://192.168.0.103:18081/repository/maven-public/
具体配置使用待后续补充
Docker 安装 Jenkins
安装前准备
安装JDK
- 推荐自行下载安装,因为yum源安装的是openJDK,下载地址: jdk-8u351-linux-x64.tar.gz
创建文件夹:mkdir -p /usr/local/java
通过windows下载xftp上传 /usr/local/java下,或使用wget命令下载
目录可自定义,解压:tar -zxvf jdk-8u351-linux-x64.tar.gz
配置环境变量:vim /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_351
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
使环境变量配置立即生效:source /etc/profile
检验是否安装成功:java -verison
安装Maven
- 下载地址:apache-maven-3.8.7-bin.tar.gz
创建文件夹:mkdir -p /usr/local/maven
通过windows下载xftp上传 /usr/local/maven下,或使用wget命令下载
目录可自定义,解压:tar -zxvf apache-maven-3.8.7-bin.tar.gz
配置环境变量:vim /etc/profile
#set Java Environment
JAVA_HOME=/usr/local/java/jdk1.8.0_351
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
#set Maven Environment
MAVEN_HOME=/usr/local/maven/apache-maven-3.8.7
PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_HOME PATH
使环境变量配置立即生效:source /etc/profile
检验是否安装成功:mvn -v
如windows一样使用,修改setting文件:vim apache-maven-3.8.7/conf/setting.xml
#设置私服地址
<mirror>
<id>maven</id>
<name>maven</name>
<url>http://192.168.0.103:18081/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
安装Git
一般的平台通常都能通过自身的一个包管理工具去安装 git 的各个版本(包括当前官方最新版本),但是红帽系列通过 yum 安装却无法安装最新版本,而且都是很旧的版本,这种版本对许多新的命令以及特性都不支持,例如 switch 命令是 2.23 版本才发布的,在此之前的版本都没有,所以官方推荐像 CentOS 通过下载 git 源码包的方式去安装
安装前检查
检查是否已经安装版本号:git version
查看yum软件源里包的版本并排序:yum list git --showduplicates | sort -r
使用yum安装
上步检查已经可以看到CentOS7使用yum安装,一般都是1.8.3.1版本
正常安装老版本
- 查看git版本rpm包:
yum list git
- 执行安装:
yum install -y git
- 默认位置:
cd /usr/libexec/git-core
- 卸载命令:
yum remove git
升级安装新版本
- 安装GIT源rpm包:
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
- 执行安装:
yum install -y git
- 默认位置:
cd /usr/libexec/git-core
- 卸载命令:
yum remove git
- 不推荐指定位置安装:
yum --installroot=/usr/local/git --releasever=/ install git
【注意】个人并不推荐使用yum安装软件时将软件安装到自定义目录,因为实际操作过程中发现如果安装到自定义目录,会额外安装很多依赖的软件包,即使这些依赖包已经安装过,也会在你自定义的目录中重新安装!会在你指定的目录下生成根目录,类似一个用户级目录,所以谨慎使用
–installroot=/usr/local/git 表示指定自定义的安装目录
–releasever=/ 表示为安装该软件的根目录
源码编译安装
-
卸载老版本并安装依赖:
yum remove git
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
-
下载地址:git-2.39.0.tar.gz
通过windows下载xftp上传 /usr/local/下,或使用wget命令下载
目录可自定义,解压:tar -zxvf git-2.39.0.tar.gz >/dev/null
进入目录并安装:cd git-2.39.0 && ./configure --prefix=/usr/local/git && make && make install
设置软连接:ln -s /usr/local/git/bin/git /usr/bin/git
或
设置环境变量:vim /etc/profile
export PATH=$PATH:/usr/local/git/bin
-
第一步
./configure: 该步骤主要用来检测系统的配置、环境以及相关依赖,如果缺少相关依赖,该脚本会中止执行,软件安装失败
如:它会检测是否安装了gcc (用于编译各种源代码的软件),如果未安装,该脚本会中止执行
当该脚本执行完成之后,它会根据之前检查的结果,生产一个 Makefile 文件,该文件规定了用什么编译器、编译参数等信息 ,描述了文件编译的相互依赖关系 -
第二步
make:该步骤主要用来编译源代码,make指令会从 Makefile 文件中读取相关指令,然后进行编译,编译完成之后会生成可执行文件 -
第三步
make install: 该步骤主要用来安装软件,make install命令会从 Makefile 文件中读取相关指令,然后将软件安装到指定位置
安装位置是设置的: /usr/local/git
验证安装成功
- 查看版本号:
git version
安装NodeJs
安装Jenkins
- 拉取jenkins官方推荐包含插件blueocean的镜像:
docker pull jenkinsci/blueocean
- 创建启动运行容器:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f666d4138ecb nginx "/docker-entrypoint.…" 2 weeks ago Up 2 weeks 80/tcp protal_nginx
92cdb6419fa8 jenkinsci/blueocean "/sbin/tini -- /usr/…" 5 weeks ago Up 14 hours 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp, 0.0.0.0:9999->8080/tcp, :::9999->8080/tcp aiguibin_jenkins
7a3fcd26c5b8 sonatype/nexus3 "/opt/sonatype/nexus…" 5 weeks ago Up 5 weeks 0.0.0.0:18081->8081/tcp, :::18081->8081/tcp aiguibin_nexus
7a47fefa41fe nginx "/docker-entrypoint.…" 5 weeks ago Up 8 days 0.0.0.0:8080->80/tcp, :::8080->80/tcp entry_nginx
[root@localhost ~]# docker stop 92cdb6419fa8
92cdb6419fa8
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f666d4138ecb nginx "/docker-entrypoint.…" 2 weeks ago Up 2 weeks 80/tcp protal_nginx
7a3fcd26c5b8 sonatype/nexus3 "/opt/sonatype/nexus…" 5 weeks ago Up 5 weeks 0.0.0.0:18081->8081/tcp, :::18081->8081/tcp aiguibin_nexus
7a47fefa41fe nginx "/docker-entrypoint.…" 5 weeks ago Up 8 days 0.0.0.0:8080->80/tcp, :::8080->80/tcp entry_nginx
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f666d4138ecb nginx "/docker-entrypoint.…" 2 weeks ago Up 2 weeks 80/tcp protal_nginx
92cdb6419fa8 jenkinsci/blueocean "/sbin/tini -- /usr/…" 5 weeks ago Exited (143) 38 seconds ago aiguibin_jenkins
7a3fcd26c5b8 sonatype/nexus3 "/opt/sonatype/nexus…" 5 weeks ago Up 5 weeks 0.0.0.0:18081->8081/tcp, :::18081->8081/tcp aiguibin_nexus
7a47fefa41fe nginx "/docker-entrypoint.…" 5 weeks ago Up 8 days 0.0.0.0:8080->80/tcp, :::8080->80/tcp entry_nginx
[root@localhost ~]# docker rm 92cdb6419fa8
92cdb6419fa8
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f666d4138ecb nginx "/docker-entrypoint.…" 2 weeks ago Up 2 weeks 80/tcp protal_nginx
7a3fcd26c5b8 sonatype/nexus3 "/opt/sonatype/nexus…" 5 weeks ago Up 5 weeks 0.0.0.0:18081->8081/tcp, :::18081->8081/tcp aiguibin_nexus
7a47fefa41fe nginx "/docker-entrypoint.…" 5 weeks ago Up 8 days 0.0.0.0:8080->80/tcp, :::8080->80/tcp entry_nginx
[root@localhost ~]# docker run -d -u root -p 28082:8080 -p 50000:50000 -v /usr/local/git:/usr/local/git -v /usr/local/java:/usr/local/java -v /usr/local/maven:/usr/local/maven -v /usr/local/nodejs:/usr/local/nodejs -v /usr/local/gradle:/usr/local/gradle -v /usr/local/python:/usr/local/python -v /usr/local/docker/jenkins/data:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock --restart=always --privileged=true --name aiguibin_jenkins jenkinsci/blueocean
换行格式
docker run -d -u root \
-p 28082:8080 -p 50000:50000 \
-v /usr/local/git:/usr/local/git \
-v /usr/local/java:/usr/local/java \
-v /usr/local/maven:/usr/local/maven \
-v /usr/local/nodejs:/usr/local/nodejs \
-v /usr/local/gradle:/usr/local/gradle \
-v /usr/local/python:/usr/local/python \
-v /usr/local/docker/jenkins/data:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
--privileged=true \
--name aiguibin_jenkins \
jenkinsci/blueocean
###可能出现的错误:
[root@localhost ~]# docker logs ec2278301d45
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
原因:
jenkins默认以jenkins:jenkins用户来运行,
该用户对于宿主/usr/local/docker/jenkins/data目录没有写权限,
所以无法写入容器中的/var/jenkins_home目录
###特别参数说明
-u root 因为宿主机是root用户,容器中jenkins user的uid为1000
解决方案以下任选一种:
1.以root用户启动jenkins容器,在docker run 命令中指定用户"-u root",并开启--privileged=true
2.修改/usr/local/docker/jenkins/data权限,chown -R 1000:1000 /usr/local/docker/jenkins/data
使用Jenkins
- 浏览器登陆:
http://192.168.0.103:9999
- 进入容器内部:
docker exec -it aiguibin_jenkins /bin/bash
- 查看初始密码:
cat /var/jenkins_home/secrets/initialAdminPassword
- 修改插件下载地址:
vi /var/jenkins_home/hudson.model.UpdateCenter.xml
修改前
修改后