容器介绍
Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的 Docker 有以下几个部分组成:
- DockerClient 客户端
- Docker Daemon 守护进程
- Docker Image 镜像
- DockerContainer 容器
Docker能做什么
- 搭建测试环境
- 搭建各类基础服务
- 搭建测试执行环境
Docker和虚拟机的区别
- VM(VMware) 在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用
- Container(Docker 容器),在宿主机器、宿主机器操作系统上创建 Docker 引擎,在引擎的基础上再安装应用。
优缺点对比
- VM 虚拟化一个完整的内核;启动慢;内存占用大;
- Docker 容器共享宿主机内核;启动更快;内存占用小;
- Docker 缺点:一个容器将内核搞坏,整个宿主机都会挂;挑内核的应用不应使用 docker 容器【兼容性测试(2B 的企业应用,对操作系统内核有要求)、编译如 C++】
启动时间:Docker秒级启动,虚拟机分钟级启动。
轻量级:docker镜像大小通常以M为单位,虚拟机以G为单位。容器资源占用小,要比虚拟机部署更快速。
性能:docker共享宿主机内核,系统级虚拟化,占用资源少,没有Hypervisor层开销,性能基本接近物理机; 虚拟机需要Hypervisor层支持,虚拟化一些设备,具有完整的GuestOS,虚拟化开销大,因而降低性能,没有容器性能好。
安全性:由于共享宿主机内核,只是进程级隔离,因此隔离性和稳定性不如虚拟机,docker具有一定权限访问宿主机内核,存在一定安全隐患。
使用要求:VM基于硬件的完全虚拟化,需要硬件CPU虚拟化技术支持; docker共享宿主机内核,可运行在主流的Linux发行版,不用考虑CPU是否支持虚拟化技术。
总结:虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。
Docker的关键技术
Docker的安装
Docker的基本使用命令
镜像管理命令
- 1. docker pull {image_name} (拉取镜像)
- 2. docker push {image_name} (推送镜像)
- 3. docker images (查看当前机器的所有镜像)
- 4. docker rmi {image_name} (删除当前机器的一个镜像)
- 5. docker tag {source_images_name:tag your_image_name:tag}为一个镜像打 tag
- 6. docker save busybox > busybox.tar
- 7. docker load < busybox.tar.gz
容器管理命令
- 1. docker run --name={your_name} --d {image_name} (运行容器)
- 2. docker ps -s -a {查看当前所有容器}
- 3. docker stop {container_name} (停止容器)
- 4. docker kill (container_name) {杀死容器}
- 5. docker rm -f {container_name} (容器如果运行中,-f强制删除容器;容器不在运行,可不加-f)
查信息相关命令
- 1. docker logs -f {容器名称} (查看容器日志)
- 2. docker info (查看 docker 服务的信息)
- 3. docker inspect {容器名称} (查看容器的元数据)
与容器交互的命令
- 1. docker exec -it {容器名称} bash 进入容器,exec 的意思是在容器中运行一个命令。如果是 bash
并且指定了-it 就会打开容器的 shell 交互
- 2. docker cp {container:name}:{container_path} {host_path} 把宿主机上的一个文件 copy 到容器中
容器运行命令的一些参数(docker run)
- 1. --name 指定容器名称
- 2. -d 后台运行
- 3. -port 指定端口映射规则
- 4. --network 指定容器运行的网路模式
- 5. -v 指定需要挂载的数据卷
- 6. -env 指定需要传递给容器的环境变量
↙↙↙阅读原文可查看相关链接,并与作者交流