docker安装及常用命令
docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包它们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何的接口。
其中,沙箱是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。
直接部署应用程序
一般来说,如果我们要部署一个应用程序(Application),第一步肯定是要先准备一台物理服务器,然后在物理服务器上安装一个操作系统(Operating System),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以 用下面的图来表示:
物理机上部署应用有一下缺点:
- 部署非常慢。因为我们得先准备硬件服务器,接着还要安装操作系统,然后再部署应用程序,而且应用程序还有很多的依赖软件,所以这个过程是比较慢的。
- 成本非常高。主要是物理机成本太高,即使是部署一个简单的应用,也需要一台服务器。
- 资源浪费。如果应用台简单,也容易浪费硬件资源,比如CPU和内存。
- 迁移和扩展太慢。如果需要迁移应用,或者扩展应用,都要再准备其他的物理服务器,过程很麻烦,也很慢。
使用虚拟机部署应用程序
虚拟机允许我们在一台物理计算机模拟出多台机器,简单地理解,虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟机,这样做的话,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离,如下图所示:
虚拟机的优点:
- 可以把资源分配到不同的虚拟机,达到硬件资源的最大利用。
- 与直接在物理机上部署应用,虚拟机更容易扩展应用。
- 云服务:通过虚拟机虚拟出不同的物理资源,可以快速搭建云服务。
虚拟机的缺点:
- 虚拟机的不足之处来自于对物理服务器资源的消耗,当我们在物理服务器创建一台虚拟机时,便需要虚拟出一套硬件并在上面运行完整的操作系统,每台虚拟机都占用了许多的服务器资源。
Docker容器部署
Docker是使用时下很火的Golang语言进行开发的,其技术核心是Linux内核的Cgroup,Namespace和AUFS类的Union FS等技术,这些技术都是Linux内核中早已存在很多年的技术,所以严格来说并不是一个完全创新的技术,Docker通过这些底层的Linux技术,对Linux进程进行封装隔离,而被隔离的进程也被称为容器,完全独立于宿主机的进程。所以Docker是容器技术的一种实现,也是操作系统层面的一种虚拟化,与虚拟机的通过一套硬件再安装操作系统完全不同。
docker与虚拟机比较:
项目 | docker | 虚拟机 |
---|---|---|
相同点 | 1. 都可在不同的主机之间迁移 2. 都具备 root 权限 3. 都可以远程控制 4. 都有备份、回滚操作 | |
操作系统 | 在性能上有优势,可以轻易的运行多个操作系统 | 可以安装任何系统,但是性能不及容器 |
原理 | 和宿主机共享内核,所有容器运行在容器引擎之上,容器并非一个完整的操作系统,所有容器共享操作系统,在进程级进行隔离 | 每一个虚拟机都建立在虚拟的硬件之上,提供指令级的虚拟,具备一个完整的操作系统 |
优点 | 高效、集中。一个硬件节点可以运行数以百计的的容器,非常节省资源,QoS 会尽量满足,但不保证一定满足。内核由提供者升级,服务由服务提供者管理 | 对操作系统具有绝对权限,对系统版本和系统升级具有完全的管理权限。具有一整套的的资源:CPU、RAM 和磁盘。QoS 是有保证的,每一个虚拟机就像一个真实的物理机一样,可以实现不同的操作系统运行在同一物理节点上 |
资源管理 | 弹性资源分配:资源可以在没有关闭容器的情况下添加,数据卷也无需重新分配大小 | 虚拟机需要重启,虚拟机里边的操作系统需要处理新加入的资源,如磁盘等,都需要重新分区。 |
远程管理 | 根据操作系统的不同,可以通过 shell 或者远程桌面进行 | 远程控制由虚拟化平台提供,可以在虚拟机启动之前连接 |
缺点 | 对内核没有控制权限,只有容器的提供者具备升级权限。只有一个内核运行在物理节点上,几乎不能实现不同的操作系统混合。容器提供者一般仅提供少数的几个操作系统 | 每一台虚拟机都具有更大的负载,耗费更多的资源,用户需要全权维护和管理。一台物理机上能够运行的虚拟机非常有限 |
配置 | 快速,基本上是一键配置 | 配置时间长 |
启动时间 | 秒级 | 分钟级 |
硬盘使用 | MB | GB |
性能 | 接近原生态 | 弱于原生态 |
系统支持数量 | 单机支持上千个 | 一般不多于几十个 |
原文来自–>here
docker安装
1.apt-get update
。
2.curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
。
3.echo 'deb https://download.docker.com/linux/debian stretch stable'> /etc/apt/sources.list.d/docker.list
。
4.apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
。
5.有选项时选择yes
。
6.apt-get update
。
7.sudo apt install docker.io
。
8.检查docker安装情况: docker
。
docker常用命令
docker开启:
service docker start
systemctl start docker
开机启动docker:
systemctl enable docker
docker关闭:
systemctl stop docker
查看镜像:
docker images
docker images -q 查看所有的镜像id
容器开启:
docker start 容器名
容器关闭:
docker stop 容器名
删除容器:
docker rm 容器名
docker rm $(docker ps -aq) 删除所有停止运行的容器
查看容器:
docker ps (显示运行的容器)
docker ps -a (显示所有的容器,包括关闭的,显示其开启关闭时间等信息)
进入容器:
docker exec -it 容器编号 /bin/bash
查看docker日志:
docker logs -f -t 容器编号
在没有dockerfile文件,只有docker-compose.yml文件时,我们要用docker-compose来创建镜像并开启容器。
docker-compose安装命令:
apt install docker-compose //先要下好docker
进入对应目录下执行:
docker-compose up -d //开启容器
docker-compose down //关闭容器(用完后一定要关)
建镜像并开启容器。
docker-compose安装命令:
apt install docker-compose //先要下好docker
进入对应目录下执行:
docker-compose up -d //开启容器
docker-compose down //关闭容器(用完后一定要关)