docker的概念 :docker是一个可供开发者在容器中 开发 部署 运行 应用的一个平台。通过使用Linux容器去部署应用的方式称为容器化。

基础概念

Images and Container

image:镜像,镜像是一个可执行包,其中包含了运行应用的内容:代码、运行环境、库、环境变量、配置文件等内容。

container:容器,容器需要通过运行一个镜像来启动。即一个镜像的运行实例。可以理解为镜像运行后在内存中的状态。通过 docker ps 可以查看。

Containers and Virtual machines

容器在Linux上本机运行,并与其他容器共享主机的内核。它运行一个独立的进程,不占用任何其他可执行文件的内存,使其轻量级。

相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序对主机资源进行虚拟访问。通常,VM提供的环境比大多数应用程序需要的资源更多。

Service

服务:在分布式应用程序中,应用程序的不同部分称为“服务”。 例如,如果您想象一个视频共享站点,它可能包括一个用于在数据库中存储应用程序数据的服务,一个用户在上传内容后在后台进行视频转码的服务,一个用于前端的服务,等等。

服务实际上只是“生产中的容器”。服务只运行一个镜像,但它编码了镜像运行的方式 ,它应该使用哪些端口,应该运行多少个容器副本,以便服务具有所需的容量,以及 等等。 扩展服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多计算资源。

Task

任务:在服务中运行的单个容器称为任务。任务被赋予以数字递增的唯一ID,最多为在docker-compose.yml中定义的副本数。

Swarm

集群:是一组运行Docker并加入群集的计算机。在此之后,您继续运行您习惯使用的Docker命令,但现在它们由群集管理器(swarm manager)在群集上执行。群中的机器可以是物理的或虚拟的。加入群组后,它们被称为节点(nodes)。

swarm manager 可以使用多种策略来运行容器,例如“最空闲的节点”(emptiest node),它使用容器填充利用率最低的机器。 或“全局”,它确保每台机器只获得指定容器的一个实例。 Compose文件中配置swarm manager执行这些策略。

swarm manager是swarm中唯一可以执行命令的机器,或者授权其他机器作为工作者(worker)加入群集。 worker只是在那里提供能力,没有权力告诉任何其他机器它能做什么和不能做什么。

Stack

stack是一组相互关联的服务,它们共享依赖关系,并且可以协调和扩展。 单个堆栈能够定义和协调整个应用程序的功能(尽管非常复杂的应用程序可能希望使用多个堆栈)。

安装

官方文档十分详细地介绍了各个环境的安装步骤。

基础使用

查看docker的详细安装信息

docker info

运行hello-world镜像,惯例了

docker run hello-world

完整命令是(参考 https://docs.docker.com/engine/reference/commandline/run/

docker run [ OPTIONS ] IMAGE [ COMMAND ] [ ARG... ]

查看当前机器下的镜像

docker image ls

查看当前机器下的镜像(-aq all in quiet mode)

docker container ls

Dockerfile

Dockerfile定义容器内环境中发生的事情。

创建一个Dockerfile工作空间,新建一个Dockerfile文件,然后将相应的代码,资源文件放入其中。(当然你也可以在项目的目录中建一个Dockerfile文件,这样这个目录就可以被Docker管理了)。

在Dockerfile文件中输入构建的指令,运行以下命令,生成镜像

docker build --tag=friendlyhello .

注意最后的一个点,表示当前目录。其中--tag=friendlyhello表示给镜像命名,如果要加tag,应该写作--tag=friendlyhello:v0.0.01

运行应用,可以加 -d 参数在后台运行,其中-p表示设置映射端口号。

docker run -p 4000:80 friendlyhello

可以查看container的容器id,然后终止容器

docker container stop 1fa4a

给镜像重新命名,加标签

docker tag image username/repository:tag

推送镜像到云端(先登录)

docker push username/repository:tag

从远程仓库拉取并运行镜像

docker run -p 4000:80 username/repository:tag

Service

编写一个docker-compose.yml文件,用于定义,运行和扩展服务。docker-compose.yml文件需要定义服务的基础镜像,占用资源,端口映射等信息。

编写好docker-compose.yml文件后,执行如下命令,初始化集群(swarm)

docker swarm init

docker stack deploy -c docker-compose.yml getstartedlab

查看服务

docker service ls

或者用如下命令查看

docker stack services getstartedlab

查看服务中的任务列表

docker service ps getstartedlab_web

如果要扩展应用规模,需修改docker-compose.yml中replicas参数,然后执行下面的命令:

docker stack deploy -c docker-compose.yml getstartedlab

关闭应用和集群

docker stack rm getstartedlab

docker swarm leave --force

查看运行的服务

docker service ls

Swarm

swarm由多个节点组成,可以是物理或虚拟机。 基本概念很简单:运行 docker swarm init 以启用 swam manager 并使当前计算机成为一个 swam manager,然后在其他计算机上运行docker swarm join以使它们作为worker加入swarm。

假如创建了连个vm,分别命名为wm1和wm2,将wm1设置为swarm manager

docker-machine ssh myvm1 "docker swarm init --advertise-addr <myvm1 ip>"

将myvm2加入swarm作为worker

docker-machine ssh myvm2 "docker swarm join --token <token> <ip>:2377"

将当前shell切换至myvm1环境

docker-machine env myvm1

查看节点信息

docker node ls

关闭集群

docker stack rm getstartedlab

重启Docker machines

docker-machine start <machine-name>

参考

https://docs.docker.com/get-started/part6/

Docker学习笔记:基础的更多相关文章

  1. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  2. Docker学习笔记总结

    Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/   一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...

  3. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  4. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

  5. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  6. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  7. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  8. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  9. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  10. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

随机推荐

  1. sshj 示例

    sshj 示例 开发常常需要去服务器做一些操作,比如配置一下,或者取服务器的配置什么的,需要写点工具方便开发. 下面是一个使用sshj 模拟ssh的过程. package sshStuff; impo ...

  2. python3集合练习(set)

    #集合是由不同元素组成;无序;集合中的元素必须是不可变类型;#s = {} 或者 s = set() 创建集合#update()扩展集合.返回值为Noneg1 = {'wcj','good','luc ...

  3. easyui-textbox多行文本中输入内容,有回车操作时将文本拼接<br/>

    <input class="easyui-textbox" name="versionText" id="versionText" d ...

  4. 解决easyUI中翻页后前面已钩选项自动变为未选择的问题

    在easyUI的datagrid中,必须在属性的第一条就要写 idField:'id' (只要创建数据表格,就必须要加idField),其中id是页面数据的主键名称. 这样设置之后,表格翻页之后,前面 ...

  5. Dev破解组件。

    将UI项目中的properties的license.lcx内容清空

  6. 20175213 2018-2019-2 《Java程序设计》第4周学习总结

    ## 教材学习内容总结 在第四周的学习过程中,我学习了第五章的内容. 第五章内容总结: 1.子类继承的方法只能操作子类继承和隐藏的成员变量. 2.子类和父类在同一包的继承性 子类自然继承了其父类中不是 ...

  7. html 分页

    /*列表分页底部按钮*/ div.tablefooter{ color: #4f6d95; } select.pageLength{ border: 1px solid #d0daea; border ...

  8. TestNG实现用例运行失败自动截图(转载)

    转载自:https://blog.csdn.net/galen2016/article/details/70193684 重写Listener的onTestFailure方法 package com. ...

  9. Python学习—数据库篇之pymysql

    一.pymysql简介 对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql是Python中操作MySQL的模块,其使用方法和MySQ ...

  10. Linux 使用nmcli配置网络

    Linux 使用nmcli配置网络 前提: 在虚拟机中添加一张桥接模式的网卡,如果是VirtualBox虚拟机中要shutdown才能添加. 1.启动NetworkManager工具,安装nmcli命 ...