Linux(i/ˈlɪnəks/ LIN-əks)是一种自由和开放源码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布[5][6],在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数Linux系统还包括像提供GUI的X Window之类的程序。除了一部分专家之外,大多数人都是直接使用Linux 发行版,而不是自己选择每一样组件或自行设置。
Linux严格来说是单指操作系统的内核,因操作系统中包含了许多用户图形接口和其他实用工具。如今Linux常用来指基于Linux的完整操作系统,内核则改以Linux内核称之。由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于1983年发起的GNU计划提供,自由软件基金会提议将其组合系统命名为GNU/Linux[7][8],但Linux不属于GNU计划,这个名称并没有得到社区的一致认同。
通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包含X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器、LibreOffice办公软件、GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。
准备环境:
Oracle VM VitualBox
CentOS7
XShell Plus
JDK8
Tomcat8
详细安装步骤见视频
常用命令:
#清屏
clear
#显示文件和目录 -l:文件的详细信息,-a:列出的文件包含隐藏文件
ls
#进入到XXX目录
cd
#新建目录
mkdir
#以文本形式显示文件内容
cat
#复制文件
cp
#删除文件
rm
#生成一个内容文件
echo
#生成一个空文件
touch
#查看网络信息
ip addr
ifconfig
#测试网络连通
ping
#系统信息
uname
#主机名
hostname
#重启电脑
reboot
#立刻关机
shutdown -h now
#解压 -c:建立一个归档文件的参数指令,-z:是否需要用 gzip 压缩,-x:解开一个归档文件的参数指令,-v:压缩的过程中显示文件,-f:使用档名,在f之后要立即接档名
tar -zxvf xxx
#编辑文件 vi:系统自带编辑
#编辑模式:等待编辑命令输入
#插入模式:编辑模式下,输入i进入插入模式,插入文本信息
#命令模式:在编辑模式下,输入:进行命令模式
#常用命令 :q(直接退出),:q!(强制退出),:wq(保存后退出,并可以新建文件)
vi
防火墙配置:
#查看状态
systemctl status firewalld.service
#启动
systemctl start firewalld.service
#重启
systemctl restart firewalld.service
#停止
systemctl stop firewalld.service
#查看规则
firewall-cmd --list-all
#查询端口是否开放
firewall-cmd --query-port=8080/tcp
#开放8080端口
firewall-cmd --permanent --add-port=8080/tcp
#移除端口
firewall-cmd --permanent --remove-port=8080/tcp
传输文件到服务器:
#lrzsz是一个xhsell传输文件的小工具,rz为上传文件到服务器,sz为下载文件到宿主机
#安装
yum install -y lrzsz
#传输jdk压缩包文件
rz
解压:
tar -zxvf jdk-8u161-linux-x64.tar.gz
#变更目录名
mv jdk1.8-161 jdk8
环境变量配置:
vi /etc/profile
# 最后一行插入
export JAVA_HOME=/usr/local/java/jdk8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
# 更新配置文件 source命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 这些配置文件。
source profile
验证:
java -version
传输安装文件:
rz
解压:
tar -zxvf apache-tomcat-8.5.59.tar.gz
#变更目录名
mv apache-tomcat-8.5.59 tomcat8
启动:
#tomcat安装好之后和windows的tomcat目录一致
#进入到tomcat的bin目录启动tomcat
cd /bin
./startup.sh
停止
./shutdown.sh
开发和运维之间因为环境不同而导致的矛盾
集群环境下每台机器部署相同的应用
DevOps(Development and Operations)
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到 任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker是世界领先的软件容器平台。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。 运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏 捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O7L7seTF-161460374683
0)(C:\Users\Toucher\Desktop\Day01\Docker(一)]\LS03-IMG\docker1-1.jpg)
简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管 理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就 能完成。
避免选择恐惧症: 如果你有选择恐惧症,还是资深患者。Docker 帮你打包你的纠结!比如 Docker 镜像;Docker 镜 像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应 用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
节省开支: 一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高 价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化 的方式。
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于原生 |
系统支持量 | 单机支持上千个容器 | 一般是几十个 |
Docker使用C/S架构,Client通过接口与Server进程通信实现容器的构建,运行和发布,如图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g07JHnjI-1614603746831)(C:\Users\Touche
r\Desktop\Day01\Docker(一)]\LS03-IMG\docker1-2.jpg)
将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器。
镜像分层结构:
位于下层的镜像称为父镜像(Parent Image),最底层的称为基础镜像(Base Image)。
最上层为“可读写”层,其下的均为“只读”层。
AUFS:
[外链图片转
失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FmZtUxgG-1614603746832)(C:\Users\Toucher\Desktop\Day01\Docker(一)]\LS03-IMG\docker1-3.jpg)
Docker命令行工具,用户是用Docker Client与Docker daemon进行通信并返回结果给用户。也可以使用其他工具通 过Docker Api 与Docker daemon通信。
经常会和仓库(Repository)混为一谈,实际上Registry上可以有多个仓库,每个仓库可以看成是一个用户,一个用户 的仓库放了多个镜像。仓库分为了公开仓库(Public Repository)和私有仓库(Private Repository),最大的公开仓库是 官方的Docker Hub,国内也有如阿里云、时速云等,可以给国内用户提供稳定快速的服务。用户也可以在本地网络 内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次 在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
Docker 提供了两个版本:社区版 (CE) 和企业版 (EE)。
以Centos7为例,且Docker 要求操作系统必须为64位,且centos内核版本为3.1及以上。
# 查看系统内核版本信息
uname -r
卸载旧版本:
yum list installed | grep docker
yum -y remove ...
卸载后将保留 /var/lib/docker 的内容(镜像、容器、存储卷和网络等)。
rm -rf /var/lib/docker
1.安装依赖软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装前可查看device-mapper-persistent-data和lvm2是否已经安装
rpm -qa|grep device-mapper-persistent-data
rpm -qa|grep lvm2
2.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 清华大学源 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 阿里云镜像源 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.更新yum软件包索引
yum makecache fast
安装最新版本docker-ce
yum install docker-ce -y
#安装指定版本docker-ce可使用以下命令查看
yum list docker-ce.x86_64 --showduplicates | sort -r
#安装完成之后可以使用命令查看
docker version
#启动
systemctl start docker
#开机自动启动
systemctl enable docker
#搜索Java
yum makecache fast
这里使用阿里云的免费镜像加速服务,也可以使用其他如时速云、网易云等
1.注册登录开通阿里云容器镜像服务
2.查看控制台,招到镜像加速器并复制自己的加速器地址
3.找到/etc/docker目录下的daemon.json文件,没有则直接输入命令:
(你进去doker目录是没有的 然后自己直接vi 一个 直接写)
vi daemon.json
4.加入以下配置: (加速器你去阿里运里查找)
#填写自己的加速器地址
{
"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"]
}
5.通知systemd重载此配置文件
systemctl daemon-reload
6.重启docker服务
systemctl restart docker
7.再去下载Java 是非常快的
docker pull java
输入docker
可以查看Docker的命令用法,输入docker COMMAND --help
查看指定命令详细用法。
查找镜像:
#搜索docker hub网站镜像的详细信息
docker search 关键词
下载镜像:
#Tag表示版本,有些镜像的版本显示latest,为最新版本
docker pull 镜像名:TAG
查看镜像:
#查看本地所有镜像
docker images
删除镜像:
#删除指定本地镜像
#-f 表示强制删除
docker rmi -f 镜像ID或者镜像名:TAG
获取元信息:
#获取镜像的元信息,详细信息
docker inspect 镜像ID或者镜像名:TAG
[root@localhost ~]# docker inspect java
运行:
#--name 指定容器名,可自定义,不指定自动命名
#-i 以交互模式运行容器
#-t 分配一个伪终端,即命令行,通常-it组合来使用
#-p 指定映射端口,讲主机端口映射到容器内的端口
#-d 后台运行容器
#-v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读
docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像ID或镜像名:TAG
[root@localhost docker]# docker run --name Tom -it -p 8080:8080 -d tomcat:7
容器列表:
#docker ps查看正在运行的容器
#-a 查看所有容器(运行中、未运行)
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d382838bc1c2 tomcat:7 "catalina.sh run" 17 seconds ago Up 15 seconds 0.0.0.0:8080->8080/tcp Tom
[root@localhost docker]#
# -q 只查看容器的ID
docker ps -a -q
[root@localhost docker]# docker ps -q
d382838bc1c2
[root@localhost docker]# ^C
启动容器:
docker start 容器ID或容器名
停止容器:
docker stop 容器ID或容器名
删除容器:
#-f 表示强制删除
docker rm -f 容器ID或容器名
查看日志:
docker logs 容器ID或容器名
进入正在运行容器:
#进入正在运行的容器并且开启交互模式终端
#/bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
#也可以用docker exec在运行中的容器执行命令
docker exec -it 容器ID或者容器名 /bin/bash
[root@localhost docker]# docker exec -it Tom /bin/bash
root@d382838bc1c2:/usr/local/tomcat#
root@d382838bc1c2:/usr/local/tomcat#
root@d382838bc1c2:/usr/local/tomcat#
拷贝文件:
docker cp 主机文件路径 容器ID或容器名:容器路径 #主机中文件拷贝到容器中
docker cp 容器ID或容器名:容器路径 主机文件路径 #容器中文件拷贝到主机中
获取容器元信息:
docker inspect 容器ID或容器名
作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。
#也可以用docker exec在运行中的容器执行命令
docker exec -it 容器ID或者容器名 /bin/bash
[root@localhost docker]# docker exec -it Tom /bin/bash
root@d382838bc1c2:/usr/local/tomcat#
root@d382838bc1c2:/usr/local/tomcat#
root@d382838bc1c2:/usr/local/tomcat#
拷贝文件:
```shell
docker cp 主机文件路径 容器ID或容器名:容器路径 #主机中文件拷贝到容器中
docker cp 容器ID或容器名:容器路径 主机文件路径 #容器中文件拷贝到主机中
获取容器元信息:
docker inspect 容器ID或容器名