Docker概述
Docker是什么?
是一种轻量级的“虚拟机"
在Linux容器里运行应用的开源工具
Docker的使用场景
打包应用程序简化部署
可脱离底层硬件任意迁移
Docker核心概念
镜像
容器
仓库
公有仓库:官方提供
私有仓库:私人搭建
注:进项和容器可以相互转换!
CentOS安装Docker的两种方式
使用CURL获得Docker的安装脚本进行安装
使用YUM仓库来安装Docker
注:建议使用YUM安装!
docker安装
主机 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
服务器 | CentOS7 | 192.168.142.130 | Docker-19.003.0-ce |
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm 2
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装Docker-CE
yum install docker-ce -y
#关闭防火墙和安全功能
systemctl stop firewalld.service
setenforce 0
#开启docker
systemctl start docker.service
#开机自启动docker
systemctl enable docker.service
#查看服务进程状态
ps aux | grep docker
docker基础操作
#查看docker本号
docker version
#公有仓库搜索镜像
docker search nginx
#下载镜像(忒慢!)
docker pull 仓库名称【:标签】
实例:
docker pull nginx
#重载守护进程
systemctl daemon-reload
#重启服务
systemctl restart docker
#查看已下载的镜像
docker images
#查看镜像详细信息
docker inspect 镜像ID
#添加新标签
docker tag 名称[:标签] 新名称[:新标签]
#删除镜像
docker rmi 仓库名称[:标签]
docker rmi 镜像ID
#存出镜像
docker save -o 存出镜像名 存出的镜像
#载入镜像
docker load --input 存出文件名
docker load < 存出文件名
#上传镜像
docker push 仓库名称[:标签]
docker容器操作
#创建容器
docker create [选项]镜像运行的程序
#选项
-i让容器的标准输入保持打开
-t让Docker分配一个伪终端
**实例:**
```bash
docker create -it nginx:latest /bin/bash
#查看容器
docker ps [选项]
#选项
-a:列出最近一次启动的容器
-q:静默模式,只显示容器编号
实例:
docker ps -a
#启动容器
docker start 容器ID
#创建容器并执行shell命令
docker run [选项]镜像运行的程序,执行的命令
#选项
-p:可以指定映射端口;
-P:将容器开放的网络端口(默认是80端口)映射到主机随机的一个端口;
-d:在后台进行运行
#持续在后台执行
docker run -d 容器名称 /bin/bash -c "while true;do echo hello;done"
#终止容器
docker stop 容器的ID/名称
#进入容器,容器一定要处于up状态
docker exec p[选项]容器的ID/名称 /bin/bash
docker exec -it 容器ID /bin/bash
#选项
-i : 即使没有连接,也保持STDIN 打开;
-t : 分配一个伪终端,这样就可以看到 Linux 命令提示符了;
#退出容器
exit
#导出容器
docker export 容器的ID/名称ID > 文件名
#导入容器(会生成镜像,而不会创建容器)
cat 文件名 | docker import -生成的镜像名称:标签
#删除容器
docker rm [选项]容器的ID/名称
#批量删除
docker ps -a | awk '{print "docker rm "$1}' | bash
docker资源控制
1.限制CPU使用速率
●通过--cpu-quota选项来限制CPU的使用率
●通过修改配置文件cpu.cfs_quota_us实现
实例:
docker run --cpu-quota 20000 centos
2.多任务按比例分享CPU
docker run --cpu-shares 1024容器A
docker run --cpu-shares 1024容器B
docker run --cpu-shares 2048容器C
实例:
#按比例分配
#创建两个容器为c1和c2, 若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为33.3%和166.7%。
locker run -itd --name c1 --cpu-shares 512 paigeeworld/centos7
locker run -itd --name c2 --cpu-shares 1024 paigeewor1d/centos7
3.使用--cpuset-cpus选项限制CPU内核使用权
docker run- -m 512m paigeeworld/ centos7
4.对blkio的限制
--device-read-bps: 限制读某个设备的bps (数据量)
实例:
docker run -d --device-read-bps /dev/sda: 30M paigeeworld/centos7
--device-write-bps :限制写入某个设备的bps (数据量)
实例:
docker run -d --device-write-bps dev/sda: 30M pai geewor ld/ centos7
--device-read-iops :限制读某个设备的iops (次数)
--device-write-iops :限制写入某个设备的iops (次数)
Docker的数据管理
数据管理操作
方便查看容器内产生的数据
多容器间实现数据共享
两种管理方式
数据卷(容器和宿主间的共享)
数据卷容器(实现容器之间的共享)
docker数据卷
数据卷是一个提供容器使用的特殊目录
#创建数据卷
docker run -d -V /data1 -V /data2 --name web httpd:centos
#挂载主机目录作为数据卷
docker run -d -V /var/www:/data1 --name web-1 httpd:centos
#挂载web容器中的数据卷到新的容器
docker run -it --volumes-from web --name db1 httpd:centos /bin/bash
实例:
#下载镜像
docker pull centos
#宿主机目录/var/www挂载容器中的/data1
docker run -v /var/www:/data1 --name web1 -it centos /bin/bash
#创建测试
cd /data1/
touch test
#退出容器
exit
#返回宿主机进行查看
ls /var/www
[root@localhost ~]# ls /var/www
test
docker数据卷容器
#数据卷容器
docker run --name web100 -v /data1 -v /data2 -it centos /bin/bash
#新容器挂载数据卷容器web100
docker run -it --volumes-from web100 --name db1 centos /bin/bash