容器,进程管理

先插播一个小知识、

云主机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.卸载防火墙

  1. 将软件包拷贝到云主机上

首先购买两台云主机,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 人正在系统学习中

来源:Y

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月1日
下一篇 2021年7月1日

相关推荐