Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。
A 容器不需要引导操作系统内核,因此可以在不到一秒的时间内创建容器。此功能使基于容器的虚拟化比其他虚拟化方法更加独特和可取。
B 由于基于容器的虚拟化为主机增加了很少或没有开销,因此基于容器的虚拟化具有接近本机的性能。
C 对于基于容器的虚拟化,与其他虚拟化不同,不需要其他软件。
D 主机上的所有容器共享主机的调度程序,从而节省了额外资源的需求。
E 与虚拟机映像相比,容器状态(Docker或LXC映像)的大小很小,因此容器映像很容易分发。
F 容器中的资源管理是通过cgroup实现的。Cgroups不允许容器消耗比分配给它们更多的资源。虽然主机的所有资源都在虚拟机中可见,但无法使用。这可以通过在容器和主机上同时运行top或htop来实现。所有环境的输出看起来都很相似。
Docker镜像是Docker容器的源代码,Docker镜像用于创建容器。使用build命令创建镜像。
Docker容器包括应用程序及其所有依赖项,作为操作系统的独立进程运行。
四种状态:运行、已暂停、重新启动、已退出。
FROM:指定基础镜像
LABEL:功能是为镜像指定标签
RUN:运行指定的命令
CMD:容器启动时要运行的命令
COPY/ADD
docker pull 拉取或者更新指定镜像
docker push 将镜像推送至远程仓库
docker rm 删除容器
docker rmi 删除镜像
docker images 列出所有镜像
docker ps 列出所有容器
docker cp 命令用于容器与主机之间的数据拷贝
主机到容器:
docker cp /www 96f7f14e99ab:/www/
容器到主机:
docker cp 96f7f14e99ab:/www /tmp/
9.启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令
docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx
创建Dockerfile后,您可以构建它以创建容器的镜像
推送或拉取镜像。
docker rmi $(docker images -q)
docker run IMAGE env
与Docker相关的本地资源存放在/var/lib/docker/目录下,其中container目录存放容器信息,graph目录存放镜像信息,aufs目录下存放具体的镜像底层文件。
A:整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:
B:尽量选取满足需求但较小的基础系统镜像,建议选择debian:wheezy镜像,仅有86MB大小
C:清理编译生成文件、安装包的缓存等临时文件
D:安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖
E:从安全的角度考虑,应用尽量使用系统的库和依赖
F:使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。
docker start $(docker ps -q)
docker rm $(docker ps -a -q)
docker inspect --format '{{ .State.Pid }}'
docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress }}' yuanhao
docker run -it --name xingdian --net bridge --ip 172.17.0.2 centos /bin/bash
Ctrl+p+q
docker logs 容器名称或容器id
创建镜像时Dockerfile要指定正确的EXPOSE的端口
一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程
在使用docker create命令创建容器或使用docker run 创建并运行容器的时候,可以使用-c|–cpu-shares[=0]参数来调整同期使用CPU的权重,使用-m|–memory参数来调整容器使用内存的大小。
首先,仓库是存放一组关联镜像的集合,比如同一个应用的不同版本的镜像,注册服务器是存放实际的镜像的地方,注册索引则负责维护用户的账号,权限,搜索,标签等管理。注册服务器利用注册索引来实现认证等管理。
Docker 自1.3.0版本往后以来,加强了对镜像安全性的验证,需要手动添加对非官方仓库的信任。DOCKER_OPTS=”–insecure-registry dl.dockerpool.com:5000” 重启docker服务
加速器可以用阿里云镜像加速器,进入阿里云网站在控制台可以看到,根据提示来即可。配置文件 /etc/docker/daemon.json 添加如下命令
DOCKER_NETWORK_OPTIONS="--registry-mirror=https://....."
地址可以为国内镜像地址,也可为公司内网镜像仓库地址。
如果是公司内网的,直接在/etc/sysconfig/docker-network 里面添加如下配合DOCKER_NETWORK_OPTIONS=“--insecure-registry xxx-ip”
Ubuntu系统下Docker的配置文件是/etc/default/docker,CentOS系统配置文件存放在/etc/sysconfig/docker
Docker的默认存放位置是/var/lib/docker,如果希望将Docker的本地文件存储到其他分区,可以使用Linux软连接的方式来做。
LXC利用Linux上相关技术实现容器,Docker则在如下的几个方面进行了改进:
移植性:通过抽象容器配置,容器可以实现一个平台移植到另一个平台;
镜像系统:基于AUFS的镜像系统为容器的分发带来了很多的便利,同时共同的镜像层只需要存储一份,实现高效率的存储;
版本管理:类似于GIT的版本管理理念,用户可以更方面的创建、管理镜像文件;
仓库系统:仓库系统大大降低了镜像的分发和管理的成本;
周边工具:各种现有的工具(配置管理、云平台)对Docker的支持,以及基于Docker的Pass、CI等系统,让Docker的应用更加方便和多样化。