第十天Docker简介&Linux基础
docker是什么
简单来说docker解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的的容器虚拟化技术
虚拟化技术
虚拟机
如vmware
缺点
卡!
Docker安装
转自vulhub:https://vulhub.org/#/docs/
Linux
Linux发行版本
- Ubuntu:
- 特点:用户友好,适合初学者,广泛使用在桌面和服务器环境。
- 包管理:APT(使用 DEB 包)。
- 版本:有长期支持版本(LTS,每两年发布一次)和普通版本。
- Debian:
- 特点:稳定、安全,适合服务器和桌面使用。
- 包管理:APT(使用 DEB 包)。
- 版本:分为稳定版、测试版和不稳定版。
- Fedora:
- 特点:最新的软件包和技术,适合开发者和技术爱好者。
- 包管理:DNF(使用 RPM 包)。
- 版本:有定期发布的稳定版本和滚动更新的 Rawhide 版本。
- CentOS / RHEL:
- 特点:企业级稳定性,广泛用于服务器环境。
- 包管理:YUM 或 DNF(使用 RPM 包)。
- 版本:CentOS 作为 RHEL 的免费社区版本,现在已转变为 CentOS Stream。
- Arch Linux:
- 特点:滚动更新,用户完全控制,适合高级用户。
- 包管理:Pacman。
- 版本:滚动更新,无固定版本发布。
- openSUSE:
- 特点:稳定、适合企业和开发者,提供 Tumbleweed(滚动更新)和 Leap(固定发布)两个版本。
- 包管理:Zypper(使用 RPM 包)。
- Manjaro:
- 特点:基于 Arch Linux,用户友好,适合桌面用户。
- 包管理:Pacman。
- 版本:滚动更新。
- Mint:
- 特点:基于 Ubuntu,用户友好,桌面环境优化,适合初学者。
- 包管理:APT(使用 DEB 包)。
- 版本:基于 Ubuntu 的 LTS 版本发布。
- Kali Linux:
- 特点:专为渗透测试和安全审计设计,包含大量安全工具。
- 包管理:APT(使用 DEB 包)。
- 版本:滚动更新。
- Gentoo:
- 特点:高灵活性和可定制性,适合高级用户,所有软件包从源代码编译。
- 包管理:Portage。
- 版本:滚动更新。
- Slackware:
- 特点:保持 Unix 传统,简洁稳定,适合高级用户。
- 包管理:没有标准的包管理工具,通常使用 Slackpkg。
- 版本:固定发布。
- Alpine Linux:
- 特点:轻量级、安全,广泛用于容器环境。
- 包管理:APK。
- 版本:滚动更新。
Linux目录结构
-
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
-
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
-
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
-
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
-
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
-
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
-
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
-
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
-
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
-
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
-
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
-
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
-
/srv:
该目录存放一些服务启动之后需要提取的数据。
-
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
-
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
-
/usr/bin:
系统用户使用的应用程序。
-
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
-
/usr/src:
内核源代码默认的放置目录。
-
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
Linux目录属性
在 Linux 中可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录
- 当为 **** 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
更改文件属性
1、chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
参数选项
- R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 R 的参数,那么该目录下的所有文件的属组都会更改。
2、chown:更改文件所有者(owner),也可以同时更改文件所属组。
语法:
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
3、chmod:更改文件9个属性
-rwxrwxrwx
每三个字符为一组分别代表owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
其中:
- r:4
- w:2
- x:1
举例:给某个文件可任意用户任意操作的权限就是777 —>7=4+2+1
Linux 文件与目录管理
什么是绝对路径与相对路径
-
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
-
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法。
操作文件常用命令
- ls(英文全拼:list files): 列出目录及文件名
- cd(英文全拼:change directory):切换目录
- pwd(英文全拼:print work directory):显示目前的目录
- mkdir(英文全拼:make directory):创建一个新的目录
- rmdir(英文全拼:remove directory):删除一个空的目录
- cp(英文全拼:copy file): 复制文件或目录
- rm(英文全拼:remove): 删除文件或目录
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
Linux 用户和用户组管理
Linux系统用户账号的管理
添加新的用户账号
命令:
useradd 选项 用户名
- c -comment 指定一段注释性描述。
- d -目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- g -用户组 指定用户所属的用户组。
- G -用户组,用户组 指定用户所属的附加组。
- s -Shell文件 指定用户的登录Shell。
- u -用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
删除帐号
命令:
userdel 选项 用户名
修改帐号
命令:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
用户口令的管理
命令:
passwd 选项 用户名
- l 锁定口令,即禁用账号。
- u 口令解锁。
- d 使账号无口令。
- f 强迫用户下次登录时修改口令。
Linux 磁盘管理
Linux vi/vim
简单来说
首先进入vim界面后处于命令模式
按下 i 后进入输入模式进行数据操作
操作完后按Esc进入命令模式
按shift+:进入底行命令模式
- q:退出vim
- qw:保存退出
- qw!:强制保存退出
Linux包管理器
yum
-
- 列出所有可更新的软件清单命令:yum check-update
-
- 更新所有软件命令:yum update
-
- 仅安装指定的软件命令:yum install <package_name>
-
- 仅更新指定的软件命令:yum update <package_name>
-
- 列出所有可安裝的软件清单命令:yum list
-
- 删除软件包命令:yum remove <package_name>
-
- 查找软件包命令:yum search
-
- 清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
apt
-
列出所有可更新的软件清单命令:sudo apt update
-
升级软件包:sudo apt upgrade
列出可更新的软件包及版本信息:apt list --upgradeable
升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
-
安装指定的软件命令:sudo apt install <package_name>
安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
-
更新指定的软件命令:sudo apt update <package_name>
-
显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
-
删除软件包命令:sudo apt remove <package_name>
-
清理不再使用的依赖和库文件: sudo apt autoremove
-
移除软件包及配置文件: sudo apt purge <package_name>
-
查找软件包命令: sudo apt search
-
列出所有已安装的包:apt list --installed
-
列出所有已安装的包的版本信息:apt list --all-versions