Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少 |
总结:windows系统需要进行图形化界面的渲染,会消耗系统资源,Linux也有图形化界面的系统,但更多的是使用命令式的系统作为服务器使用
# 切换到根目录
cd /
# 切换到上级目录
cd ..
# 查看当前文件夹下的所有文件
ls
# 查看当前文件夹下的所有文件及权限
ll
# 查看当前文件夹下的所有文件及隐藏文件
ls -a
# 创建一个文件夹
mkdir文件夹名
# 创建多级文件夹
mkdir -p 一级文件夹/二级文件夹
# 删除文件(慎用)
rm -rf
# 移动文件(剪切)
mv 移动文件 新文件地址
# 文件重命名
mv 原文件名 新文件名
# 查看目录是否存在
find 根目录名/文件名
# 复制文件/目录
cp -r 复制文件 复制的地址
# 创建文件
touch 文件名.扩展名
# 编辑文件
vi 文件名.扩展名
# 进入文件后,输入i 进行编辑 编辑完成,ESC键+':eq' 保存并退出
# ':q!'强制退出
# 'ctrl + z' 中止
# 'ctrl + c' 强制终止
# 'exit'退出容器
clear 清屏
# 下载vim命令
yum -y install vim*
# 查看文件内容
cat 文件名 # 只能显示最后一屏的女人
more 文件名 # 按百分比显示 回车键:下一个百分比 空格:下一页
less 文件名 # 可以使用上下键操作
# 压缩和解压缩
# z:调用gzip压缩命令进行压缩
# c:打包文件
# v:显示运行过程
# f:指定文件名
# x:解压压缩包
# 压缩
tar -zcvf 文件名.tar.gz 压缩位置
# 解压
tar -zxvf 压缩包 (压缩包如:java.tar.gz)
# 显示当前所在的文件路径
pwd
# 显示当前系统中运行的进程
ps -ef
# 关闭指定的服务
kill -q 服务id
# 文件授权
chmod u=rwx,g=rwx,o=rwx 文件名
chmod 741 文件名
# 查看当前开启的端口号
iptables -nL
vm10的版本可以支持win7系统,
vm15以上的版本需要win8及win10系统支持。
vm12也可以在win8及win10上安装。
下载VMWare,双击运行,一直 “下一步” 即可(可以改变安装路径)。
第五步:配置网络环境(让虚拟机可以访问外网)
虚拟机本身也是一个系统,和正常的系统使用方式是一样的,所以也需要进行网络配置。
# 找到网络配置的文件ifconf-ens33(不同的版本名字可能会不同)
cd /etc/sysconfig/network-scripts/
# 查看当前文件夹下所有文件,找到ifconf-ens33
ls
# 编辑配置文件vi 查看配置文件cat
vi ifcfg-ens33
# 修改配置文件 i进入编辑状态,进行文件编辑
# 编辑后的文件如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
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=ens33
UUID=51fff489-cc76-4c5a-88df-12c0fd70fa7e
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.157.100
NETMASK=255.255.255.0
GATEWAY=192.168.157.2
DNS1=114.114.114.114
DNS2=8.8.8.8
# 注释: BOOTPROTO改为static,静态获取
# ONBOOT:yes
# IPADDR:192.168.157.100 IP地址 在VMWare--编辑--虚拟网络编辑器--选择NAT模式--点NAT设置--查看到子网IP(然后自己随意选择一个1-254之间的任意IP地址填入,如:查看的子网IP为192.168.157.0,那么IPADDR=192.168.157.xxx xxx为1-254容易值)
# NETMASK:255.255.255.0 子网掩码
# GATEWAY:192.168.157.2 网关IP 在VMWare--编辑--虚拟网络编辑器--选择NAT模式--点NAT设置--查看到网关IP,填入
# DNS1:114.114.114.114 服务器 用于访问外网的,三大运营商用的就是114.114.114.114或8.8.8.8 这可以填写一个
# 重新加载配置文件,让网络配置生效
service network restart
第六步:关闭防火墙、连接测试
# 注意:使用这命令关闭防火墙,只能暂时关闭,若重新启动虚拟机,防火墙需要再次关闭
# 注意:主机的防火墙也需要关闭
# 查看当前的防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
# 外网访问测试
ping baidu.com
# 主机访问测试(主机IP使用ipconfig查看、主机防火墙也需要关闭)
ping 主机IP
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
为什么选择Docker?
(1)上手快。
用户只需要几分钟,就可以把自己的程序“Docker化”。Docker依赖于“写时复制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码即改”的境界。
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。(2)职责的逻辑分类
使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境都是正常的,上线后出了问题就归结为肯定是运维的问题)”(3)快速高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件件的取。)(4)鼓励使用面向服务的架构
Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程序)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装仓库所需要的包
yum install -y yum-utils
# 配置阿里云的docker下载镜像地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
# 启动Docker服务
systemctl start docker
# 查看docker的版本信息
docker version
# 查看docker的系统信息
docker info
docker run hello-world
docker images
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://gbntt4wi.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 查看当前已有镜像
docker images
# 删除指定镜像
docker rmi 镜像id
# 删除指定容器
docker rm 容器id
# 重启容器
docker restart 容器id
docker start 容器id
# 查看docker进程
docker ps -a
# 关闭进程
docker stop 进程id
# 重启进程
docker restart 进程id
docker start 进程id
# 将java压缩包上传到指定位置
# 解压
tar -zxvf jdk-8u144-linux-x64.tar.gz
# 编辑 /etc/profile
vi /etc/profile
# 添加JAVA_HOME和PATH
JAVA_HOME=/home/juni/java/jdk1.8.0_144/
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
# 重新加载配置文件
source etc/profile
# 测试:javac java
# 拉取镜像
docker pull tomcat
# 启动
docker run -d -p 9001:8080 --name dockerTomcat tomcat:9.0
# 进入指定的容器中
docker exec -i -t 容器名 /bin/bash
# 在容器中运行:
# 更新包管理工具
apt-get update
# 安装vim
apt-get install vim
# 将web项目的war包复制到webapps目录下(localhost下运行)
docker cp 本地文件的路径 容器id或者名:
# 上传Tomcat的压缩包
# 解压
tar -zxvf 压缩包
# 配置端口号
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# 进入bin目录,执行./startip.sh
./startup.sh
docker pull mysql
# docker run 运行 --name 给当前的服务起一个名字 -e 环境配置 tag:指定要启动的mysql的版本
docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3336:3306 mysql:5.7
# 查找当前环境中是否已经存在MySQL相关的环境
rpm -qa | grep mysql
解压后可以看到多个.rpm的文件,其中需要安装server及client
# gzip解压
tar -zxvf 压缩包
# 解压
tar -xvf 压缩包
# z:调用gzip压缩命令进行压缩
# c:打包文件
# v:显示运行过程
# f:指定文件名
# x:解压压缩包
执行安装命令后,会报错,直接进行下一步进行,无需理会。(错误信息:需要安装perl相关的lib文件)
rpm -ivh MySQL-server-5.6.49-1.el6.x86_64.rpm
安装完成后,执行第三部命令,但执行过程中还会出现报错,无需理会,进行下一步。(错误含义:当前系统中已经存在的mariadb相关的环境,与MySQL冲突了,需要卸载)
# 安装perl相关的lib文件
yum install -y perl*
# 安装server
rpm -ivh MySQL-server-5.6.49-1.el6.x86_64.rpm
# 错误含义:当前系统中已经存在的mariadb相关的环境,与MySQL冲突了,需要卸载。
# 卸载自带的mariadb服务
rpm -e --nodeps mariadb-libs-1:5.5.56-2.el7.x86_64
# 再次安装MySQL服务
rpm -ivh MySQL-server-5.6.49-1.el6.x86_64.rpm
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
已为root账户生成了一个随机密码
You will find that password in '/root/.mysql_secret'.
你可以在'/root/.mysql_secret'找到该密码
You must change that password on your first connect,
你必须在第一次连接时修改密码
no other statement but 'SET PASSWORD' will be accepted.
第一行语句输入 'SET PASSWORD'进行密码的修改
See the manual for the semantics of the 'password expired' flag.
rpm -ivh MySQL-client-5.6.49-1.el6.x86_64.rpm
# 查看随机生成的密码
cat /root/.mysql_secret
# 启动MySQL服务
service mysql start
# 在查看随机生成的密码
cat /root/.mysql_secret
# 启动MySQL服务之后:service mysql start
# 设置密码,输入上边查看到密码
mysql -u root -p
# 进入mysql命令
输入查看到的密码
# 设置密码
set password=password('root');
# 授予访问权限,进行远程连接测试(在MySQL环境下操作)
grant all privileges on *.* to 'root' @'%' identified by 'root';
flush privileges;
exit #退出sql命令
# 开启Linux的3306端口号
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
# 重新启动mysql
service mysql start
# 查看当前开启的端口号
iptables -nL
每日一点点进步
不进则退