Docker学习大纲

2023-09-18 22:47:54

Docker 是一个用于自动部署应用程序在轻量级容器中的平台。下面列出一些 Docker 的基础和必知概念。

1. 容器(Containers)

容器是独立的应用程序运行环境。

命令:

docker run hello-world

解析:

该命令会从 Docker Hub 下载一个叫做 “hello-world” 的镜像,并运行一个容器。

2. 镜像(Images)

镜像是包含有文件和应用程序依赖的轻量级包。

命令:

docker build -t my-image .

解析:

构建一个 Docker 镜像,并给它标记为 “my-image”。

3. Dockerfile

Dockerfile 是一系列指令,用于定义如何创建一个 Docker 镜像。

示例:

# Use an official Python runtime as a parent image
FROM python:3.7-slim

解析:

这里使用官方的 Python 3.7 镜像作为基础镜像。

4. 端口映射(Port Mapping)

将容器的端口映射到宿主机。

命令:

docker run -p 4000:80 my-image

解析:

这个命令将容器的 80 端口映射到宿主机的 4000 端口。

5. 数据卷(Volumes)

用于数据持久化和容器之间共享数据。

命令:

docker run -v /path/on/host:/path/in/container my-image

解析:

这将主机上的 /path/on/host 目录挂载到容器内的 /path/in/container

6. Docker Compose

用于定义和运行多容器 Docker 应用程序。

命令:

docker-compose up

解析:

使用 docker-compose.yaml 文件启动服务。

7. 网络(Networking)

容器间的网络通信。

命令:

docker network create my-network

解析:

创建一个名为 my-network 的新网络。

8. Docker Hub

Docker 的公共镜像仓库。

命令:

docker push my-image

解析:

将名为 my-image 的镜像推送到 Docker Hub。

9. 容器生命周期

理解 start、stop、kill、rm 等命令。

命令:

docker start my-container
docker stop my-container
docker rm my-container

解析:

分别用于启动、停止和删除名为 my-container 的容器。

10. 容器日志(Logs)

查看容器的输出。

命令:

docker logs my-container

解析:

查看名为 my-container 的容器的日志输出。

【提醒】以上只是 Docker 的基础和必须了解的概念,更多高级的特性和用法(如 Swarm、Docker Registry 等)也是非常重要的。

1. Docker Swarm

Docker Swarm 是 Docker 的原生集群管理工具。它可以帮助你管理一个或多个 Docker 主机,并使它们作为一个单一的虚拟 Docker 主机。

初始化 Swarm 集群

docker swarm init

解析:

初始化一个新的 Swarm 集群并使当前 Docker 主机成为 Swarm 管理器。

添加工作节点

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c 192.168.99.100:2377

解析:

将一个 Docker 主机加入到 Swarm 集群作为一个工作节点。你需要从 docker swarm init 输出中获取令牌和地址。

部署服务

docker service create --replicas 1 --name helloworld alpine ping docker.com

解析:

创建一个新的服务 helloworld,该服务运行 alpine 镜像并执行 ping docker.com

2. Docker Registry

Docker Registry 是用于存储 Docker 镜像的服务器。

运行本地 Docker Registry

docker run -d -p 5000:5000 --name registry registry:2

解析:

运行一个本地的 Docker Registry,并将其绑定到端口 5000。

推送镜像到本地 Registry

docker tag my-image localhost:5000/my-image
docker push localhost:5000/my-image

解析:

标记 my-image 并将它推送到本地 Docker Registry。

3. Docker Stack

Stack 是一个定义了多个服务、网络和卷的 Docker Compose 文件。

部署 Stack

docker stack deploy -c docker-compose.yml mystack

解析:

使用 docker-compose.yml 文件部署一个新的 Stack。

4. Docker Secrets

Docker Secrets 主要用于安全地管理敏感信息。

创建一个 Secret

echo "my_secret" | docker secret create my_secret -

解析:

创建一个名为 my_secret 的 Docker Secret。

使用 Secret

在服务定义或堆栈定义中使用 Secret。

示例:

services:
  myservice:
    image: my_image
    secrets:
      - my_secret

解析:

这会将 my_secret 挂载到名为 myservice 的服务的 /run/secrets/my_secret 路径下。

以上是 Docker 的一些高级特性和用法。每个高级功能都有更多的参数和配置选项,因此建议查阅 Docker 的官方文档进行更深入的学习。

更多推荐

HTTP网络协议与接口测试逻辑

很多测试人员都做过接口测试,但是聊到接口还是会不太清楚。网络协议:但凡要做接口测试,一定要懂网络协议。目前市场主流的网络协议HTTP1.1,Dubbo2,HTTP2.O(相对较少)HTTP1.1网络协议:搞懂打开浏览器访问一个URL会经历的步骤有哪些?(也就是搞懂了HTTP网络协议的基本交互流程)解析URL,将域名解析

性能测试 —— Jmeter 常用三种定时器

1、同步定时器位置:HTTP请求->定时器->SynchronizingTimer当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行取样器的操作测试绝对并发,比如秒杀,抢购等场景,结果要用聚合报告查看简单案例:模拟50个用户同时访问百度线程

JMeter 测试脚本编写技巧

是一款开源软件,用于进行负载测试、性能测试及功能测试。测试人员可以使用JMeter编写测试脚本,模拟多种不同的负载情况,从而评估系统的性能和稳定性。以下是编写JMeter测试脚本的步骤。第1步:创建测试计划在JMeter中,测试计划是测试的最高级别,它包含了各种元素和配置,如线程组、断言、监听器等。测试人员需要在JMe

2种方法,jmeter用一个正则提取器提取多个值!

jmeter中,用json提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢?肯定,很多人都自信满满的说,可以!形如:token":“(.?)“,“identity”:”(.?)”写一个这样的正则表达式,不就是可以提取两个了吗!是的,这种做法没有错,但是,你发现一个问题吗?你的“Name

【初阶数据结构】树结构与二叉树的基础概念

君兮_的个人主页勤时当勉励岁月不待人C/C++游戏开发Hello,米娜桑们,这里是君兮_,今天带来数据结构里的重点内容也是在笔试,面试中的常见考点——树与二叉树,其中二叉树又分为很多种,我们先来讲讲基础的内容带大家一步步入门二叉树与其遍历一树的概念及其结构1.树结构中的相关概念2.树的表示二什么是二叉树?1概念2特殊的

急救车工业路由器应用提升急救效率:车联网、数据采集与远程诊疗

急救车作为医院里医疗急救过程中的重要组成部分,在智慧医疗物联网领域中急救车应用4G工业路由器实现网络部署与数据采集,通过工业4G路由器能够实时采集到病患的生理数据、救护现场音频与视频、GPS定位以及车辆运行状态等重要信息。这些数据将被传输到医疗急救系统帮助院内医生对急救车上的病患进行初步判断,并及时提供远程诊疗协助。I

【计算机网络】图解路由器(一)

图解路由器(一)1、什么是路由器?2、什么是路由选择?3、什么是转发?4、路由器设备有哪些类型?5、根据性能分类,路由器有哪些类型?5.1高端路由器5.2中端路由器5.3低端路由器6、什么是家用路由器?7、运营商用什么类型的路由器?8、企业用什么类型的路由器?9、什么是IP地址?10、地址如何分类?11、什么是CIDR

浅谈C++|文件篇

引子:程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化。C++中对文件操作需要包含头文件<fstream>。C++提供了丰富的文件操作功能,你可以使用标准库中的fstream库来进行文件的读取、写入和定位等操作。文件操作在许多应用中非常常见,例如读取配置文件、处理日志、存储数据等。

oracle的正则表达式(regular expression)

当前,正则表达式已经在很多软件中得到广泛的应用,包括Linux,Unix,HP等操作系统,PHP,C#,Java等开发环境,ORACLE则在10G中推出了自己的正则表达式。Oracle10g正则表达式提高了SQL灵活性,有效的解决了数据有效性,重复词的辨认,无关的空白检测,或者分解多个正则组成的字符串等问题。Oracl

服务器性能测试监控平台export+prometheus(普罗米修斯)+grafana搭建

1.export数据采集工具简介:export是prometheus是的数据采集组件的总称,它可以将采集到的数据转为prometheus支持的格式node_export:用来监控服务器硬件资源的采集器,端口号为9100mysql_export:用来监控mysql数据库资源的采集器,端口号是91042.prometheu

【翻译】Kingfisher 官方指南 Cheet Sheet

原文地址:https://github.com/onevcat/Kingfisher/wiki/Cheat-SheetThisdocumentationwilldescribesomemostcommonusageofKingfisher.ThecodesnippetisbasedoniOS.However,thesi

热文推荐