容器,进程管理

先插播一个小知识、

云主机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@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 #在前台运行

 

进程切换

子进程 | ( )

:| (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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值