概述
什么是容器
- 容器技术已经成为应用程序封装和交付的核心技术
- 容器技术的核心有以下几个内核技术组成:
– Cgroups(Control Groups) -资源管理
– NameSpace-进程隔离
– SELinux安全 - 由于是在物理机上实施隔离,启动一个容器,可以像一个进程一样快速
什么是Docker
- Docker是完整的一套容器管理系统
- Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
Docker特性
Docker优点
- 相比于传统的虚拟化技术,容器更加简洁高效
- 传统虚拟机需要给每个VM安装操作系统
- 容器使用的共享公共库和程序
Docker缺点
- 容器的隔离性没有虚拟化强
- 共用Linux内核,安全性有先天缺陷
- SELinux难以驾驭
- 监控容器和容器排错是挑战
部署Docker
安装前准备
- 需要64位操作系统
- 至少RHEL6.5以上的版本,强烈推荐RHEL7
- 关闭防火墙(不是必须)
安装Docker
- 配置yum源
– docker软件包位于光盘RHEL7-extras.iso中
mkdir /mnt/extras
mount RHEL7-extras.iso /mnt/extras
vim /etc/yum.repos.d/dvd.repo
[extras]
name=extras
baseurl=file:///root/extras
enabled=1
gpgcheck=0
yum -y install docker
systemctl restart docker
systemctl enable docker
Docker镜像
什么是镜像
- 在Docker中容器是基于镜像启动的
- 镜像的启动容器的核心
- 镜像采用分层设计
- 使用快照的COW技术,确保底层数据不丢失
docker images
#查看所用的镜像
Docker hub镜像仓库
- https://hub.docker.com
- Docker官方提供公共镜像的仓库(Registry)
docker search busybox
#搜索镜像
下载、上传镜像
docker help pull
docker pull docker.io/busybox
docker help push
docker push docker.io/busybox
导入、导出镜像
docker save docker.io/busybox:latest -o busybox.tar
ls
busybox.tar
docker load -i nginx.tar
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 42b4762643dc 4 weeks ago 109.2 M e1ddd7948a1c 4 wee
docker run -it docker.io/centos /bin/bash
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name=“nginx-lb”: 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
exit
ctrl+r后ctrl+q //退出时不关闭容器
Docker基本命令
命令 | 说明 |
---|
docker images | 查看镜像列表 |
docker ps | 查看后台运行的容器 |
docker ps -a | 显示所有的容器,包括没有启动的 |
docker pa -q | 只显示容器ID |
docker history docker.io/centos | 查看镜像制作历史 |
docker inspect docker.io/nginx | 查看镜像底层信息 |
docker rm id | 删除容器(需停止) |
docker rmi docker.io/nginx | 删除镜像(需停止) |
docker tag docker.io/centos:latest docker.io/cen:v1 | 修改镜像名称和标签 |
容器常见命令
命令 | 说明 |
---|
docker run [OPTIONS] IMAGE [COMMAND] [ARG…] | 运行容器 |
docker ps | 查看容器列表 |
docker stop id | 关闭容器 |
docker start id | 启动容器 |
docker restart | 重启容器 |
docker attach [options] id | 进入容器,exit会导致容器关闭 |
docker exex -it id bash | 用bash进入容器,exit不会关闭容器 |
docker inspect id或者镜像名 | 查看容器底层信息 |
docker top id | 查看容器进程列表 |