Docker概述
docker基本组成
-
- docker client: 客户端
- docker deamon:守护进程
- docker image: 镜像
- docker container: 容器
- docker registry: 镜像仓库
docker和虚拟机比较
docker运用场景:
-
- 应用程序打包和发布
- 应用程序隔离
- 持续集成
- 部署微服务
- 快速搭建测试环境
- 提供paas环境(平台既服务)
镜像概述:
镜像是什么?
• 一个分层存储的文件
• 一个软件的环境
• 一个镜像可以创建N个容器
• 一种标准化的交付
• 一个不包含Linux内核而又精简的Linux操作系统
镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层
对应着Dockerfile中的一条指令。Docker镜像默认存储 在/var/lib/docker/<storage-driver>中。
(ps:直白来讲,镜像就是一个环境,这个环境可能是单独的一个软件运行环境,也有可能是一整套很多相互依赖的软件运行环境。实际生产过程中就是将整个代码加环境打包成镜像,让后在容器中运行。)
镜像从哪里来?
Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。 地址:https://hub.docker.com/explore
配置镜像加速器:https://www.daocloud.io/mirror
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
为了符合自己的业务需求,大多数时候镜像还是需要自己来制作。
镜像和容器的联系:
如图,容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时, 会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。 如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。所以无论多 少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作 的,并不会修改镜像的源文件,这种方式提高磁盘利用率。 若想持久化这些改动,可以通过docker commit 将容器保存成一个新镜像
常用镜像管理命令:
容器概述
创建容器常用选项:
容器资源限制:
示例:
内存限额:
允许容器最多使用500M内存和100M的Swap,并禁用 OOM Killer:
docker run -d --name nginx03 --memory="500m" --memory-swap=“600m" --oom-kill-disable nginx
CPU限额:
允许容器最多使用一个半的CPU:
run -d --name nginx04 --cpus="1.5" nginx
允许容器最多使用50%的CPU:
docker run -d --name nginx05 --cpus=".5"
常用管理容器命令:
关于容器的命令
查看容器:docker ps -a
查看哪些是停止的容器:docker ps -a -p
启动一个容器:docker start 容器ID
创建启动一个容器:docker run
创建一个容器起别名并分配一个为终端:docker run -name mysql_test -it mysql /bin/bash
停止容器:docker stop 容器ID
进入容器:docker exec -it 容器ID
删除容器:docker rm [OPTIONS] 容器名
其中options有三种类型:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷