先插播一个小知识、
云主机linux解压RAR的压缩包
[root@ecs-proxy ~]# wget https://www.rarlab.com/rar/rarlinux-x64-5.6.0.tar.gz
#下载软件包
–2021-08-03 10:20:14– https://www.rarlab.com/rar/rarlinux-x64-5.6.0.tar.gz Resolving www.rarlab.com (www.rarlab.com)… 51.195.68.162 Connecting to www.rarlab.com (www.rarlab.com)|51.195.68.162|:443… connected. HTTP request sent, awaiting response… 200 OK Length: 541604 (529K) [application/x-gzip] Saving to: ‘rarlinux-x64-5.6.0.tar.gz’
93% [=================================================> ] 506,514 8.33KB/s in 51s
2021-08-03 10:21:11 (9.74 KB/s) – Connection closed at byte 506514. Retrying.
–2021-08-03 10:21:12– (try: 2) https://www.rarlab.com/rar/rarlinux-x64-5.6.0.tar.gz Connecting to www.rarlab.com (www.rarlab.com)|51.195.68.162|:443… connected. HTTP request sent, awaiting response… 206 Partial Content Length: 541604 (529K), 35090 (34K) remaining [application/x-gzip] Saving to: ‘rarlinux-x64-5.6.0.tar.gz’
100%[++++++++++++++++++++++++++++++++++++++++++++++++++===>] 541,604 84.0KB/s in 0.4s
2021-08-03 10:21:13 (84.0 KB/s) – ‘rarlinux-x64-5.6.0.tar.gz’ saved [541604/541604]
[root@ecs-proxy ~]# tar zxf rarlinux-x64-5.6.0.tar.gz #解压
[root@ecs-proxy ~]# cd rar/ #安装
[root@ecs-proxy rar]# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin cp rarfiles.lst /etc cp default.sfx /usr/local/lib
[root@ecs-proxy rar]# cd
[root@ecs-proxy ~]# rar x 5.rar # x解压 //a压缩
………………….
Extracting 5/public/web_install/web_install.yaml
OK All OK #解压完成
容器技术
容器用于封装应用,–用于开发,交付和部署
内核技术
Cgroups (Control Groups) 资源管理
SELinux 安全
NameSpace 命令空间(6个)
UTS 主机名 NETWORK 络 MOUNT 挂载路径 USER 用户 IPC 信 向量 PID 进程
优点:简洁高效 使用共享公共库和程序
缺点:共用linux内核,隔离性差
容器没有操作系统,虚拟化必须要有操作系统
容器共有宿主机操作系统
docker是完整一套容器管理系统 不需要过多关心底层内核技术
配置docker
系统光盘
扩展依赖包 (前两个华为云默认提供)
docker软件
1.禁用SELinux (华为云默认禁用)
2.卸载防火墙
-
将软件包拷贝到云主机上
首先购买两台云主机,IP 1.31、32,主机名docker
另一台云主机相同配置
[root@docker-0001 ~]# docker search busybox #查找镜像
[root@docker-0001 ~]# docker pull busybox #下载镜像
容器三大概念
镜像 启动容器核心 使用cow技术,采用分层技术 官方镜像地址 hub.docker.com
每一个镜像都对应唯一镜像ID (身份证 )
指定镜像 :镜像名称(文件名称) + 标签(路径)==唯一 latest 默认标签
docker images #查看本机镜像
docker search 镜像名 #查找镜像(联 )
docker pull 镜像名称:标签 #下载镜像(联 )
docker save 镜像名称:镜像标签 -o 文件名 (tar格式) #备份(导出)镜像
docker load -i 备份文件名称 #恢复(导入)镜像
导入镜像在docker1,和docker2,先 将centos nginx redis ubuntu 四个镜像拷贝到跳板机,在拷贝到docker主机
[root@ecs-proxy ~]# scp -r centos.tar.gz nginx.tar.gz redis.tar.gz ubuntu.tar.gz root@192.168.1.31:/root #把镜像从跳板机拷贝到docker上
centos.tar.gz 100% 69MB 206.8MB/s 00:00
nginx.tar.gz 100% 41MB 205.9MB/s 00:00
redis.tar.gz 100% 32MB 203.7MB/s 00:00
ubuntu.tar.gz 100% 30MB 203.1MB/s 00:00
docker2同样操作
[root@docker-0001 ~]# docker images #查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
命令:busybox latest 69593048aa3a 8 weeks ago 1.24MB
服务:redis latest 82629e941a38 2 years ago 95MB
服务:nginx latest 42b4762643dc 2 years ago 109MB
系统:ubuntu latest 20bb25d32758 2 years ago 87.5MB
系统:centos latest 76d6bc25b8a5 2 years ago 200MB
docker2同样操作
容器 隔离真机系统
运行容器
docker run -it # i交互 ,t终端 放前台运行
[root@docker-0001 ~]# docker run -it centos:latest /bin/bash #启动容器创建新容器 /bin/bash 容器内命令 可忽略 不写运行默认命令 (制作该容器目的) [root@4e13dd52aa93 /]# ls #测试
bin etc lib media opt root sbin sys usr dev home lib64 mnt proc run srv tmp var
[root@docker-0001 ~]# ls / #真机
bin CloudResetPwdUpdateAgent dev home lib64 media opt root sbin sys usr boot CloudrResetPwdAgent etc lib lost+found mnt proc run srv
容器里任何操作不会保留 run命令,每次创建新容器
前台命令:可以和用户交互
后台服务:和服务器交互
docker run -itd # i交互 , t终端, d放后台运行
容器配置管理
镜像管理 docker load -i 导入镜像 docker images 查看镜像
docker rmi (<none>错误镜像删ID) 镜像被容器使用则不能删除,删除使用的容器才能删除镜像
docker pull 下载
docker push 上传
docker save 镜像名称:镜像标签 -o 文件名称
docker load -i 备份文件名称
docker history #查看历史操作
docker inspect #查看对象信息 Env 系统环境变量 Cmd 默认启动命令 Labels标签
docker tag #镜像新名称和标签 多个标签不能删除ID,
[root@docker-0001 ~]# docker load -i centos.tar.gz
[root@docker-0001 ~]# docker images
[root@docker-0001 ~]# docker save centos:latest -o centos.tar
[root@docker-0001 ~]# docker rmi ubuntu:latest
[root@docker-0001 ~]# docker inspect centos:latest
[root@docker-0001 ~]# docker history nginx:latest
[root@docker-0001 ~]# docker tag centos:latest newname:newtag [root@docker-0001 ~]# docker search busybox
[root@docker-0001 ~]# docker pull busybox
容器管理
docker run 启动容器
docker ps 默认只显示正在运行的程序 -a 所有容器ID -q只显示容器ID
PS字段含义: ID 创建镜像 创建时的命令 创建时间 容器状态 是否监听端口 容器名称
docker rm 删除 -f 强制删除
docker start|stop|restart 容器id 启动、停止、重启容器
docker cp 本机文件路径 容器id:容器内路径 把本机文件拷贝到容器内(上传)
docker cp 容器id:容器内路径 本机文件路径 把容器内文件拷贝到本机(下载)
docker inspect 容器ID 查看容器的详细信息
docker attach 连接容器启动进程 Ctrl+P Ctrl+Q快捷键退出不会关闭 (用于排错)
docker attach 连接容器启动进程 交互式 退出容器会关闭 PID == 1
docker exec 启动命令 (维护管理)启动新进程 $$–当前进程PID
进程管理
上帝进程
特点:PID == 1 没有父进程
所有进程都是他的子进程…………..
上帝进程退出 == 容器关闭
保证容器不关闭
启动进程在后台 != 容器在后台
容器的启动进程必须在前台运行
系统启动服务所有子进程派生的进程必须是当前进程的子进程
-DFOREGROUND #在前台运行
进程切换
子进程 | ( )
:| (sleep 12345 &) # | 第一个进程PID==1 :代表空 |表示bash运行,运行结束进程退出,当第一个进程退出时()子进程成为PID==1的进程
容器内部署应用
[root@docker-0001 ~]# docker rm -f $(docker ps -aq) a1ba11fd68c3 [root@docker-0001 ~]# docker run -it –name myapache centos:latest [root@341ad4e85d4f /]# rm -f /etc/yum.repos.d/*.repo #保留当前终端,再开一个终端拷贝yum配置文件到容器
[root@docker-0001 ~]# docker cp /etc/yum.repos.d/CentOS-Base.repo myapache:/etc/yum.repos.d/
回到创建容器的终端继续执行命令
[root@341ad4e85d4f /]# yum install -y net-tools httpd #下载软件包
[root@341ad4e85d4f /]# echo Hello world >/var/www/html/index.html #写测试页面 [root@341ad4e85d4f /]# export LANG=C #设置环境变量
[root@341ad4e85d4f /]# ifconfig #查看IP eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
[root@341ad4e85d4f /]# /usr/sbin/httpd -DFOREGROUND # 启动服务以后 ctrl-p, ctrl-q 退出 如果不按快捷键退出 容器会关闭
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.17.0.2. Set the ‘ServerName’ directive globally to suppress this message
[root@docker-0001 ~]# curl http://172.17.0.2/ #退出容器测试
Hello world
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器编排(生产环境 k8s)kubelet,kubectl,kubeadm三件套8595 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!