Docker

  • 1,docker介绍
  • 2,Centos7安装docker
  • 3,docker基础命令
  • 4,docker架构
  • 5,docker镜像操作
  • 6,容器操作

1,docker介绍

  • 容器技术

在计算机的世界中,容器拥有一段漫长且传奇的历史。容器与管理程序虚拟化(hypervisorvirtualization,HV)有所不同,管理程序虚拟化通过中间层将一台或者多台独立的机器虚拟运行与物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。由于“客居”于操作系统,容器只能运行与底层宿主机相同或者相似的操作系统,这看起来并不是非常灵活。例如:可以在Ubuntu服务中运行Redhat Enterprise Linux,但无法再Ubuntu服务器上运行Microsoft Windows。相对于彻底隔离的管理程序虚拟化,容器被认为是不安全的。而反对这一观点的人则认为,由于虚拟容器所虚拟的是一个完整的操作系统,这无疑增大了攻击范围,而且还要考虑管理程序层潜在的暴露风险。尽管有诸多局限性,容器还是被广泛部署于各种各样的应用场合。在超大规模的多租户服务部署、轻量级沙盒以及对安全要求不太高的隔离环境中,容器技术非常流行。最常见的一个例子就是“权限隔离监牢”(chroot jail),它创建一个隔离的目录环境来运行进程。如果权限隔离监牢正在运行的进程被入侵者攻破,入侵者便会发现自己“身陷囹圄”,因为权限不足被困在容器所创建的目录中,无法对宿主机进一步破坏。最新的容器技术引入了OpenVZ、Solaris Zones以及Linux容器(LXC)。使用这些新技术,容器不在仅仅是一个单纯的运行环境。在自己的权限类内,容器更像是一个完整的宿主机。容器和宿主机之间的隔离更加彻底,容器有独立的网络和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好的共存。容器被认为是精益技术,因为容器需要的开销有限。和传统虚拟化以及半虚拟化相比,容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。尽管有着光辉的历史,容器仍未得到广泛的认可。一个很重要的原因就是容器技术的复杂性:容器本身就比较复杂,不易安装,管理和自动化也很困难。而Docker就是为了改变这一切而生的。

  • docker介绍

Docker is an open platform for developing, shipping, and running applications. Docker enablesyou to separate your applications from your infrastructure so you can deliver software quickly.With Docker, you can manage your infrastructure in the same ways you manage yourapplications. By taking advantage of Docker’s methodologies for shipping, testing, and deployingcode quickly, you can significantly reduce the delay between writing code and running it inproduction.Docker是一个开发,运输和运行应用程序的开放平台。 Docker使您可以将应用程序与基础架构分离,以便快速交付软件。 使用Docker,您可以像管理应用程序一样管理基础架构(OS)。 通过利用Docker的方法快速发送,测试和部署代码,您可以显着减少编写代码和在生产中运行代码之间的延迟。(代码改了)
容器提供了隔离性,结论是,容器可以为各种测试提供很好的沙盒环境。并且,容器本身就具有“标准性”的特征,非常适合为服务创建构建块。Docker的一些应用场景如下:

  • 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。容器可以在开发环境中构建,然后轻松的提交到测试环境中,并最终进入生产环境。 开发人员与运维人员进行职责的逻辑分离
  • 能够让独立的服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微型服务的部署由其实用。
  • 用Docker创建隔离的环境来进行测试。例如,用Jenkins CI这样的持续集成工具启动一个用于测试的容器。(持续化集成 war 实际部署:jenkins持续化集成 Jenkins + git )
  • Docker可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署、测试。
  • 构建一个多用户的平台即服务(PaaS)基础设施
  • 为开发、测试提供一个轻量级的独立的沙盒环境
  • 提供软件即服务(SaaS)应用程序,例如Memcached即服务
  • 高性能、超大规模的宿主机部署(可以很多容器)

沙盒:在计算机安全领域,沙盒(英语:sandbox,又译为沙箱)是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。

  • 集装箱思想

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Dock将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件、应用程序。和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

2,Centos7安装docker

Dcoker官网地址:https://www.docker.com/
官网有安装教程,很详细,这里不做演示

3,docker基础命令

  • 查看docker运行状态
 systemctl status docker

  • 停止docker
systemctl stop docker
  • 重启docker
systemctl restart docker
  • 启动docker
systemctl start docker
  • 设置为开机自动启动
systemctl enable docker
  • 查看docker详细信息
docker info
  • 查看docker版本
docker --version
  • 查看docker命令帮助
docker --help
  • 导出镜像
docker save -o 打包名 镜像名:[版本]
  • 引入镜像
docker load < 文件名

4,docker架构

Docker uses a client-server architecture. The Docker client talks to the Docker daemon, whichdoes the heavy lifting of building, running, and distributing your Docker containers. The Dockerclient and daemon can run on the same system, or you can connect a Docker client to a remoteDocker daemon. The Docker client and daemon communicate using a REST API, over UNIXsockets or a network interface. (Docker使用客户端 - 服务器架构。 Docker客户端与Docker守护进程通信,后者负责构建,运行和分发Docker容器。 Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。 Docker客户端和守护程序使用REST API,通过UNIX套接字或网络接口进行通信。)

The Docker daemon (dockerd) listens for Docker API requests and manages Docker objects suchas images, containers, networks, and volumes. A daemon can also communicate with otherdaemons to manage Docker services. (Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,如图像,容器,网络和卷。 守护程序还可以与其他守护程序通信以管理Docker服务。)

  • docker client
    The Docker client (docker) is the primary way that many Docker users interact with Docker.When you use commands such as docker run, the client sends these commands to dockerd,which carries them out. The docker command uses the Docker API. The Docker client cancommunicate with more than one daemon. (Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。 当您使用诸如docker run之类的命令时,客户端会将这些命令发送到dockerd,后者将其执行。 docker命令使用Docker API。 Docker客户端可以与多个守护进程通信。)

  • docker registry
    A Docker registry stores Docker images. Docker Hub is a public registry that anyone can use, andDocker is configured to look for images on Docker Hub by default. You can even run your ownprivate registry. If you use Docker Datacenter (DDC), it includes Docker Trusted Registry (DTR).When you use the docker pull or docker run commands, the required images are pulled fromyour configured registry. When you use the docker push command, your image is pushed toyour configured registry.(Docker注册表存储Docker镜像。 Docker Hub是任何人都可以使用的公共注册中心,Docker配置为默认在Docker Hub上查找图像。 您甚至可以运行自己的私人注册表。 如果您使用Docker Datacenter(DDC),它包括Docker Trusted Registry(DTR)。使用docker pull或dockerrun命令时,将从配置的注册表中提取所需的映像。 使用docker push命令时,图像将被推送到配置的注册表。)

5,docker镜像操作

Docker 镜像是容器的基础。镜像是一个有序集合,其中包含根文件系统更改和在容器运行时中使用的相应执行参数。镜像通常 包含堆叠在彼此之上的联合分层文件系统。镜像没有状态并且始终不会发生更改。 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

  • 列出镜像
docker images


这些镜像都是存储在Docker宿主机的/var/lib/docker目录下。

REPOSITORY:表示镜像的仓库源
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

  • 拉取镜像

如果不指定版本,则拉取的是最新的

docker pull 镜像名称[:version]

Docker镜像首页,包括官方镜像和其它公开镜像。Docker Hub上最受欢迎的10大镜像(通过Dockerregistry API获取不了镜像被pull的个数,只能通过镜像的stars数量,来衡量镜像的流行度。毫无疑问,拥有最高stars数量的库都是官方库。国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,可以使用国内(docker.io)的一些镜像加速器,镜像保持和官方一致,关键是速度块,推荐使用。配置镜像加速器:

PS:配置镜像加速器(参考该网站具体的文档操作)
阿里云(先加入阿里云开发者平台:https://dev.aliyun.com)
- docker中国加速器(https://www.docker-cn.com)
- USTC加速器(https://lug.ustc.edu.cn/wiki/ ) 真正的公共服务(无需任何操作)
- daocloud、网易蜂巢加速器:略
步骤:
sudo vim /etc/docker/daemon.json
配置内容: { "registry-mirrors": ["https://p8bdqa3l.mirror.aliyuncs.com"] }
sudo systemctl daemon-reload
sudo systemctl restart docker

这里是选择的是阿里云的

  • 查找镜像
docker search 镜像名称


NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否docker官方发布
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

  • 删除镜像
# 删除一个镜像
docker rmi 镜像名称/id# 删除多个镜像
docker rmi 镜像名称1/id1 镜像名称2/id2 ...# 删除所有镜像
docker rmi docker images -q

6,容器操作

docker run [options] image command [ARG...]options选项: -i、-t、-d、--name
-i:交互式容器
-t:tty,终端(分配一个终端,操作容器)
-d:后台运行,并且打印容器id
--name:指定容器的名称(唯一,不能重复)Linux:根的进程:/bin/basheg:创建的容器名称不能重复
docker run --name=u1 ubuntu
docker run -i -t --name=u1 ubuntu /bin/bash
docker run -i -t -d --name=u3 ubuntu /bin/bash#docker run -i -t -d --name=u3 ubuntu /bin/bash 简写方式如下
docker run -it --name u3 ubuntu /bin/bash
  • 创建交互式容器
 docker run -it --name c1 centos /bin/bash

容器创建好之后,会自动进入容器

  • 创建守护式容器
docker run -itd --name c3 centos /bin/bash

守护式容器创建好后,不会进入到容器,会在后台运行程序

  • 进入容器
#方式一:这种方式exit退出容器,容器不会停止
docker exec -it 容器名称/id /bin/bash   #方式二:这种方式exit退出容器,容器停止
docker attach 容器名称/id

方式一


方式二

  • 查看容器
#查看正在运行的容器
docker ps#查看运行过的容器(历史)
docker ps -a#最后一次运行的容器
docker ps -l

  • 启动容器
docker start 容器名称/id
  • 停止容器
docker stop 容器名称/id

  • 查看容器/镜像部分信息
docker inspect -f='{{.NetworkSettings.IPAddress}}' 容器/镜像
-f:可通过--format代替

查看c3容器全部信息

docker inspect c3


查看c3容器部分信息(IP地址)

docker inspect -f='{{.NetworkSettings.IPAddress}}' c3docker inspect --format='{{.NetworkSettings.IPAddress}}' c3

  • 删除容器(不能删除正在运行的容器)
#删除一个容器
docker rm 容器名称/id#删除多个容器
docker rm 容器名称1/id1 容器名称2/id2 ...#删除所容器
docker rm `docker ps -a -q`

  • 查看容器日志
docker logs 容器名称/id
  • 文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录


将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录


  • 目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

创建容器添加 -v 参数 后边为 宿主机目录:容器目录

 docker run -itd --name c2 -v /opt:/usr/local/myhtml centos /bin/bash


如果你共享的是多级的目录,可能会出现权限不足的提示
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --priviteged=true 来解决挂载的目录没有权限的问题

docker run -id --privileged=true --name=c4 -v /opt/:/usr/local/myhtml centos

快速入门Docker相关推荐

  1. 新手零基础快速入门Docker

    Docker学习 前言 今天第一次学习docker,跟着一位up主的视频进行了练习,把一些视频中讲到的内容记录了下来,并结合菜鸟教程中docker教程写下本文. 本文是我零基础入门docker的第一篇 ...

  2. Docker快速入门,看这个就够了

    Docker快速入门 一.Docker介绍 1.1 Docker背景 1.2 Docker概念 1.3 Docker的优势 1.4 Docker的三个基本概念 二.Docker的安装和使用 2.1 安 ...

  3. 光速入门Docker 和 Kubernetes,一起学~

    只需要每天晚上花三两个小时,在一周业余的时间里,你就能快速入门Docker和Kubernetes!! 第一期云原生在线技术工坊已经圆满结束,好评如潮,下面是部分参与者打卡截图: 第二期技术工坊活动再度 ...

  4. HotSpot源码(一):Docker与虚拟机的区别,class字节码解析,linux内核源码下载地址,Yacc与Lex快速入门

    Docker是虚拟机吗? Docker是用来隔离的,使用的是隔离的namespace,使用OS提供的接口进行应用程序之间的资源隔离,不是虚拟机.再加上它自己特殊的文件系统,一层一层叠加.他只不过是一个 ...

  5. Docker快速入门实践-纯干货文章

    Docker快速入门实践-老男孩高级架构师课程内容,如果细看还能发现讲解视频呦!小伙伴们赶紧猛戳吧! 老男孩高级架构师内部学员实践文档分享! Docker快速入门实践-纯干货文章 老男孩教育2016启 ...

  6. docker快速入门_Docker标签快速入门

    docker快速入门 by Shubheksha 通过Shubheksha Docker标签快速入门 (A quick introduction to Docker tags) If you've w ...

  7. 快速入门:使用 Docker 运行 SQL Server 容器映像

    Choose your command shell BashPowerShellCmd 适用对象:SQL Server(仅限 Linux)Azure SQL 数据库 Azure SQL 数据仓库 并行 ...

  8. MinIO Docker 快速入门 ​​​​​​​

    MinIO Docker 快速入门 前提条件 您的机器已经安装docker. 从 这里下载相关软件. 在Docker中运行MinIO单点模式. MinIO 需要一个持久卷来存储配置和应用数据.不过, ...

  9. MinIO Docker 快速入门

    MinIO Docker 快速入门 前提条件 您的机器已经安装docker. 从 这里下载相关软件. 在Docker中运行MinIO单点模式. MinIO 需要一个持久卷来存储配置和应用数据.不过, ...

最新文章

  1. Google Scholar公司科研实力大比拼:谷歌1161,华为110,为何差10倍?
  2. Java调用jar包测试
  3. 目标检测中准确率accuracy的计算(precision是精度、查准率)(Recall是召回率、查全率)
  4. unity hub是什么东西_Unity可编程渲染管线(SRP)教程:一、自定义管线
  5. java流行的测试框架调研+市面上书籍调研
  6. 在WinForm中实现省市级联的效果
  7. 【Pytorch神经网络理论篇】 02 Pytorch快速上手(二)GPU与CPU张量切换+具有随机值的张量+张量的数学运算
  8. python使用PyMysql连接MySQL实现增删改查
  9. 企业越来越重视即时通讯内部应用
  10. 案例:演示PreparedStatement对象的使用
  11. 七、数值微分与数值积分
  12. Zend Studio主题的设置
  13. IntelliJ-IDEA-Debug技巧
  14. LabVIEW升级图像识别功能
  15. 程序员必读的三十本经典巨作
  16. 饥荒联机版把服务器删掉了怎么找回,饥荒联机服务器角色存档删除 | 手游网游页游攻略大全...
  17. 电容屏和电阻屏的区别
  18. 【吹水阁】为什么微信红包单次上限200,不限制次数?——微信红包、转账支付宝转账
  19. PAT——1118 Birds in Forest 甲级
  20. VMware下安装虚拟机windows server 2016

热门文章

  1. Required request body is missing错误
  2. html5设计制作作品,16个精美的 HTML5 作品集网站设计案例
  3. 区块链相关术语(中英对照)
  4. 新手敲代码经常犯的低级错误(持续更新ing)
  5. 一个笔记本能连WiFi 通过网线共享网络给另一个电脑上网(笔记本对台式/笔记本对笔记本)
  6. 奇葩!前阿里 P9 级员工称离婚是模拟测试,已回滚复婚!
  7. Python爬虫之Js逆向案例(2)-某乎搜索
  8. C语言——副作用(side effects)和序列点(sequence points)
  9. administrator无法创建新用户的解决
  10. 基于paddlepaddle构建resnet神经网络的蝴蝶分类