先插播一个小知识、
云主机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@ecs-proxy ~]# cp -a docker /var/ftp/localrepo/ #将软件包拷贝到 /var/ftp/localrepo/ [root@ecs-proxy ~]# cd /var/ftp/localrepo/ #进入目录 [root@ecs-proxy localrepo]# createrepo --update . #更新仓库
[root@docker-0002 ~]# yum makecache #检查yum
[root@docker-0002 ~]# yum list docker-ce* #使用docker镜像
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Available Packages docker-ce.x86_64 18.06.3.ce-3.el7 local_repo
[root@docker-0002 ~]# vim /etc/sysctl.conf #开启路由转发
net.ipv4.ip_forward = 1
[root@docker-0002 ~]# sysctl -p #检查配置
vm.swappiness = 0 net.core.somaxconn = 1024 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.ip_forward = 1 [root@docker-0002 ~]# yum install -y docker-ce #下载docker
[root@docker-0002 ~]# systemctl enable --now docker #开启服务并开机自启 Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. [root@docker-0002 ~]# ifconfig #验证 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:e4:cb:9f:15 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@docker-0002 ~]# docker version #测试 Client: Version: 18.06.3-ce API version: 1.38 Go version: go1.10.3 Git commit: d7080c1 Built: Wed Feb 20 02:26:51 2019 OS/Arch: linux/amd64 Experimental: false
Server: Engine: Version: 18.06.3-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: d7080c1 Built: Wed Feb 20 02:28:17 2019 OS/Arch: linux/amd64 Experimental: false
另一台云主机相同配置
[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
[root@ecs-proxy ~]# scp -r centos.tar.gz nginx.tar.gz redis.tar.gz ubuntu.tar.gz root@192.168.1.32:/root 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
[root@docker-0001 ~]# ls busybox.tar centos.tar.gz nginx.tar.gz redis.tar.gz ubuntu.tar.gz #查看刚刚拷贝的镜像 [root@docker-0002 ~]# ls busybox.tar centos.tar.gz nginx.tar.gz redis.tar.gz ubuntu.tar.gz
[root@docker-0001 ~]# docker load -i centos.tar.gz #导入镜像 bcc97fbfc9e1: Loading layer 208.2MB/208.2MB Loaded image: centos:latest [root@docker-0001 ~]# docker load -i nginx.tar.gz 3c816b4ead84: Loading layer 58.47MB/58.47MB 787822cf1b17: Loading layer 54.44MB/54.44MB 89decbdf7fb7: Loading layer 3.584kB/3.584kB Loaded image: nginx:latest [root@docker-0001 ~]# docker load -i redis.tar.gz a098f8909d23: Loading layer 338.4kB/338.4kB c3bc3362d4ff: Loading layer 3.034MB/3.034MB bf10d8534af6: Loading layer 36.4MB/36.4MB 0949ce28adcc: Loading layer 1.536kB/1.536kB b1f287cac208: Loading layer 3.584kB/3.584kB Loaded image: redis:latest [root@docker-0001 ~]# docker load -i ubuntu.tar.gz adcb570ae9ac: Loading layer 89.95MB/89.95MB 7604c8714555: Loading layer 15.87kB/15.87kB 9e9d3c3a7458: Loading layer 11.26kB/11.26kB 27a216ffe825: Loading layer 3.072kB/3.072kB Loaded image: ubuntu:latest [root@docker-0001 ~]# docker load -i busybox.tar Loaded image: busybox:latest
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 #在前台运行