一.容器三大概念linux
1.镜像 2.容器 至关于打隔断,独立的空间 3.仓库nginx
2.概念:因为在物理机上实行的隔离,启动容器和启动进程同样快速redis
二.核心技术docker
1.Cgroups (Control Groups)-资源管理:控制最多使用多少内存,cpu,用来限制使用资源windows
2.NameSpace-命名空间 在总空间(系统驱动全部资源)的基础上划分出独立的空间,隔离6个东西以下:centos
1.主机名(一个终端改主机名,其他全部终端打开都能看到改过的主机名) -容器看不到安全
2.网络命名空间(当一个终端改ip地址的时候,其他终端用原ip则登不上去)-容器ip变了bash
3.文件系统命名空间(chroot 改变根目录路径)网络
4.进程命名空间(pstree执行几个进程,)只能看见本身的进程,别的进程看不见curl
5.信号向量命名空间(好比kill -l 有64个信号,发一个信号进程会有回应)
6.用户隔离(不一样的命名空间里有不一样的用户)
3.Selinux安全
三.Docker概念
1.是一套完整的容器管理系统
2.docker提供了一组命令,让用户更加直接方便的使用
3.优势:相比传统虚拟化技术,容器更加简洁高效,容器不须要虚拟机操做系统(缺点就是linux不能兼容windows),容器使用共享公共库和程序
缺点:1.隔离线没有虚拟化强(改一个全部全变了)
2.公用linux内核,安全性有先天缺陷
3.Selinux 难以控制
4.监控容器和容器排错是挑战
四.安装docker
1.安装前准备:
须要64位操做系统
至少是RHEL6.5以上的版本,强烈推荐RHEL7
关闭防火墙(必须)
2.配置yum源(建立两台虚拟机docker1,docker2)
1.docker软件包位于光盘RHEL-extras.iso下面
2.在物理机ftp目录下建立文件夹extras
mkdir /var/ftp/extras
3.挂载光盘在此目录下
mount RHEL-extras /var/ftp/extras
df -h 查看一下
4.安装docker
yum -y install docker(35个包)
systemctl restart docker
systemctl enable docker
五.镜像
1.在docker中容器是基于镜像启动的
2.镜像 是启动容器的核心
3.镜像启用分层设计
4.使用快照的cow技术,确保底层数据不丢失
5.查看镜像 docker images
6.官网:(hub.docker.com网址上下载镜像)
7.命令行搜索镜像: docker search 关键字(如nginx)
]#docker search busybox
]#docker pull docker.io/busybox (这个是官方的,下载次数最多)
六.下载.上传镜像
]#docker help pull
]#docker pull [options] name[:tag| @digest]
]#docker pull docker.io/busybox 下载镜像
]#docker push docker.io/busybox 上传镜像
七.打包镜像
docker save 名称(repository) : 标签(tag) -o 文件名
docker1]#docker save docker.io/busybox:latest -o busybox.tar
docker1]#scp busybox.tar root@192.168.1.32:/root
docker2]#ls
docker2]# docker images
docker2]#docker load -i busybox.tar
docker2]#docker images
八.运行容器:
docker run -it docker.io/busybox:latest /bin/sh #/bin/sh 为启动命令,若是不写就为默认的启动命令
/ # ps -ef 进程隔离
/ # hostname 主机名隔离
/ # ifconfig 网络隔离
/ # ls / 文件系统隔离
/ # cat /etc/passwd 用户隔离
/ # 信号向量命名空间隔离
九.镜像经常使用命令 (镜像:标签)
1.docker history 查看镜像的制做历史
]#docker history docker.io/redis:latest
2.docker inspect 查看底层详细信息
]#docker inspect docker.io/redis:latest
Env 环境变量
Cmd 启动命令
3.docker images 查看镜像列表
4.docker pull 下载镜像
]#docker pull docker.io/busybox 下载镜像
5.docker push 上传镜像
]#docker push docker.io/busybox 上传镜像
6.docker rmi 删除本地镜像
]#docker rmi docker.io/centos
7.docker save 镜像另存为tar包
]#docker save docker.io/busybox:latest -o busybox.tar
8.docker load 使用tar包导入镜像
]#docker load -i busybox.tar
9.docker search 搜索镜像
10.docker tag 修改镜像名称和标签
]#docker tag docker.io/centos:latest cen:v1 将 docker.io/centos:latest 改成 cen:v1
十.容器经常使用命令: (命令+id)
1.docker run 运行容器 #建立一个新的容器而且启动
docker run -it docker.io/centos
2.docker run -itd docker.io/nginx:latest 启动后放在后台(好比nginx)
docker inspect 882117d0581d 能够查看到nginx的地址
ping 172.17.0.2
curl 172.17.0.2
3.docker ps 查看容器列表
]#docker ps -a 显示全部容器
]#docker ps -aq 只显示ID
4.docker stop 关闭容器
经过docker ps 查看容器的Id docker stop id号 关闭容器
5.docker start 启动容器
经过docker ps 查看容器的Id docker start id号 开启容器
6.docker restart 重启容器
经过docker ps 查看容器的Id docker restart id号 重启容器
7.docker attach|exec 进入容器
1.docker attach 进入已经启动的容器 链接的是systemd(上帝进程) exit会致使容器关闭 须要 ctrl + p q 放入后台
docker ps 查看id 后 docker attch id号 进入
2.docker exec 进入新的进程 比较经常使用(新开一个控制台) 直接退出后不会影响进程
docker exec -it id号 /bin/bash
进入后:pstree -p
8.docker inspect 查看容器底层信息
]#docker top 882117d0581d
9.docker top 查看容器进程列表
]#docker top 882117d0581d
10.docker rm 删除容器
]#docker rm 882117d0581d