资源控制
资源打包,
资源管理(限制你使用多少)
目录
什么是容器?
• 容器技术已经成为应用程序封装和交付的核心技术
• 容器技术的核心有以下几个内核技术组成:
– Cgroups(Control Groups)-资源管理
– NameSpace-进程隔离
– SELinux安全
• 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速
• Docker是完整的一套容器管理系统
• Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
优点:
• 相比于传统的虚拟化技术,容器更加简洁高效
• 传统虚拟机需要给每个VM安装操作系统
• 容器使用的共享公共库和程序
VM(需装操作系统) -------> Docker(无需装操作系统)
Docker缺点
• 容器的隔离性没有虚拟化强
• 共用Linux内核,安全性有先天缺陷
• SELinux难以驾驭
• 监控容器和容器排错是挑战(难搞)
第一 命令空间 主机名
第二 ip(网络)
第三 磁盘
第四 进程
第五 ipc(信号比如kill)
第六 用户名
部署Docker
新建2台虚拟机
192.168.5.30/24 4G内存 2CPU 20G磁盘
192.168.5.31/24 4G内存 2CPU 20G磁盘
下面以192.168.5.30为例(2台都有配置):
# virsh edit 虚拟机名 直接修改内存;
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.5.30"
NETMASK="255.255.255.0"
GATEWAY="192.168.5.254"
vim /etc/resolv.conf ----> nameserver 192.168.5.254
]#poweroff --->然后开机 加载配置
需要64位操作系统, RHEL7版本,防火墙关闭(熟悉Docker了就不用关)
配置yum源
vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.5.254/centos-1804"
enabled=1
gpgcheck=1
[0_repo]
name=docker0
baseurl="ftp://192.168.5.254/extras" #Docker的包仓库源,不在本地yum里
enabled=1
gpgcheck=0
yum repolist
yum -y install docker
ifconfig #查看时没有docker0
systemctl restart docker
systemctl enable docker
ifconfig #查看时有docker0
镜像
• 在Docker中容器是基于镜像启动的
• 镜像是启动容器的核心
• 镜像采用分层设计
• 使用快照的COW技术,确保底层数据不丢失
docker search busybox #搜索相关镜像
docker search centos
docker search nginx
docker help pull / push #查看下载/上传帮助
docker pull docker.io/busybox # 下载镜像
docker images #查看本地镜像列表
REPOSITORY TAG IMAGE ID CREATED SIZE
名称 标签 ID 创建时间 大小
docker push docker.io/busybox #上传镜像
docker save docker.io/busybox:latest -o busybox.tar #导出本地镜像为tar文件
ls
真机传相关的tar镜像文件
scp 'docker_images.zip' root@192.168.5.31:/root
yum -y install unzip
unzip docker_images.zip
cd docker_images/
ls ----> centos.tar nginx.tar redis.tar registry.tar ubuntu.tar
for i in *.tar; do docker load -i $i ; done #导入镜像
docker load -i 镜像文件.tar #使用tar包导入镜像
docker images #查看镜像列表
启容器格式: docker 命令 参数 镜像名称:标签 启动命令
docker run -it docker.io/centos:latest /bin/bash(容器内的命令,不加则用默认的) #运行容器
进去配置yum和本机的一致,安装相关命令的包,查看ip/主机名/磁盘/进程/用户名/ipc(如kill信号)
yum provides 命令 #查找该命令相关的软件包
docker run --help
docker run -it docker.io/busybox:latest /bin/bash()
docker run -it docker.io/redis:latest
docker run -it docker.io/nginx:latest /bin/bash
docker run -it docker.io/ubuntu:latest
docker port 名字 端口 #快捷地查看端口的绑定情况。
docker ps [-qa] #查看容器信息
参数解析:
-t: 在新容器内指定一个伪终端或终端。
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
-d: 让容器在后台运行
-P: 容器内部端口随机映射到主机的高端口。
-p: 容器内部端口绑定到指定的主机端口。(如果要绑定 UDP 端口,可以在端口后面加上 /udp。
如 127.0.0.1:5000:5000/udp)
输出状态:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
https://opsx.alibaba.com/mirror 镜像下载地址
docker logs -f ID/名字 #查看容器内部的标准输出 (= tail -f)
docker histo