Docker Docker 简介和常用命令

· 2020年03月31日 · 2604 次阅读

容器介绍

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的关键技术

  • Namespace
  • 联合文件系统
  • Cgroups

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 指定需要传递给容器的环境变量
共收到 0 条回复 时间 点赞
关闭了讨论 03月31日 16:37
重新开启了讨论 03月31日 17:48
关闭了讨论 05月13日 11:17
关闭了讨论 05月13日 11:17
重新开启了讨论 02月28日 14:39
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册