Docker入门——官方文档学习记录1

Docker

概述

  • Docker是开发、部署、发布和运行应用服务的开放平台。
  • 部署、测试、开发应用更快快捷。
  • Docker提供了打包和运行服务的独立的环境——Container.
  • Container是轻量级的,且包含运行应用服务的所有依赖。因此,可在不同机器上保持一致性。

优势:

  1. 快速的,一致的应用服务交付:容器利于持续集成和持续交付工作流程。(continuous integration and continuous delivery (CI/CD))
  2. 敏捷部署和扩展。(高可移植性,轻量级)
  3. 同样硬件下提供更多的负载。

体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8YMiNa4F-1655775416318)(…/…/image/article/docker/docker_architecture.svg)]

Docker使用的是client-server架构。client 与Docker守护进程间(daemon)进行通信,完成编译、运行、分配Docker容器。客户端可在本地运行,也可以远程链接至服务端的守护进程。客户端与服务端通过基于Unix的Socker或网络接口的 REST API完成通信。Docker Compose 是一个客户端,允许使用由一组容器组成的应用程序。例如常用的:docker-compose up , docker-compose down。

The Docker daemon

Docker守护进程监听Docker API请求。包括,镜像、容器、网络、卷等。守护进程间也可通信。

The Docker client

大多数Docker用户使用Docker的主要方式。例如, docker run

Docker Desktop

面向Mac和Windows环境的应用,提供构建和分享容器化应用和微服务。包含Docker守护进程、客户端、Docker Compose、K8s、证书帮助等。

Docker Registries

一个关于Docker 镜像、容器、网络、卷、插件以及其他对象的概要说明。docker pull, docker push, docker run等命令与此相关。

Docker对象

Images 镜像

镜像是一个只读模板,用于创建Docker容器。通常,一个镜像依赖与另一个镜像。通过创建Dockerfile、定义创建镜像的一些步骤,完成创建。Dockerfile中的每一个指令都会在镜像中创建一层(layer)。当修改Dockerfile并重建镜像时,只有那想相关的层(layer)会被重建。这事镜像轻量化、更快捷。

Containers 容器

容器是镜像的一个可执行实例。同时可基于容器当前状态创建一个新的镜像。

Docker 下载

参考官方说明即可

入门教程

  1. 编译和运行一个镜像至容器;
  2. 通过Docker Hub分享镜像
  3. 多容器应用间的依赖
  4. 通过Docker compose运行应用

开始

  1. 运行getting-started镜像。若本地无该镜像,docker会自动运行docker pull命令进行下载。
docker run -d -p 80:80 docker/getting-started

-d : 使用detached模型运行,即后台运行
-p 80:80 : 将host的80端口映射到容器的80端口

本地打开127.0.0.1:80 可看到Getting Started网页。

  1. Docker Dashboard

Windows Docker Dashboard stopping 问题解决:https://blog.csdn.net/qq_39611230/article/details/108625840
需要更新WSL 组件

Docker Dashboard在Windows下安装后,暂时无法管理linux服务器上的远程Docker容器。Ubuntu中需要22.04版本以上才可安装Docker Dashboard。因此,暂不整理Docker Dashboard相关内容。

  1. 什么是容器

容器就是运行在主机上的一个与其他进程相互独立的沙盒进程。其原理是利用linux的核命名空间和控制组,Docker使这些能力与方法使用的更便捷。

  • 是镜像的一个可执行实例
  • 能够在本地机器、虚拟机、或云端运行
  • 可移植
  1. 什么是容器镜像

当运行一个容器的时候,容器具有独立的文件系统。这个文件系统是由容器镜像提供的。容器镜像包含运行容器的所有内容。

示例应用

一个基于Node.js的todo队列管理应用

编译一个应用的容器镜像

需要创建一个Dockerfile.Dockerfile是一个基于文本的指令脚本,用于创建容器镜像。

  1. 在项目文件夹下创建一个Dockerfile,与packages.json在同一个文件夹下。
# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
  1. 使用docker build命令编译镜像。注意,后面有URL路径,此为Dockerfile路径,下述命令值为当前路径。
docker build -t getting-started .

build过程:发送编译上下文至Docker daemon;执行Dockerfile中的指令;拉取所需镜像;添加apk;设置工作路径;yarn安装package.json中的包;运行前端。

执行过程中下来了很多曾,这是因为从node:12-alpine镜像开始。因为本地无该镜像,所以下载。下载完成后通过yarn安装依赖。通过CMD命令运行特殊的命令。

Dockerfile中 RUN 与 CMD 的区别:RUN是docker在创建镜像时执行的指令,每个RUN命令会创建镜像的新层,便于后续回滚。一个Dockerfile最多只会有一个CMD,该命令也会运行指令,但不会创建新曾。因此常用CMD执行一个脚本文件(例如sh文件),用于执行多条指令。

  1. 开始运行应用容器

一般通过docker run指令。首先使用docker run指令利用先前的容器名称 getting-started启动刚刚创建的镜像;其中-d表示后台运行;-p表示将容器端口映射到主机。其中左侧为主机端口,右侧为容器中的服务端口,下述:3000是容器中的服务端口,3001是映射到主机的端口。

docker run -dp 3001:3000 getting-started

更新应用

在修改完代码后不可直接用docker run 编译镜像。因为此时已有在运行中的同名称镜像容器。需要先删除老容器后,再编译新镜像容器。

删除容器
  1. docker ps 查看容器id
  2. docker stop container-id
  3. docker rm container-id
重新编译运行
  1. docker build -t getting-started
  2. docker run -dp 3000:3000 getting-started

分享应用

通过Docker Hub的服务可以上传和下载镜像。

创建仓库
  1. 登录Docker Hub
  2. 进入Repositories模块,点击Create Repossitory
  3. 输入名称及其他配置。
上传镜像
  1. 使用docker login -u YOUR_USER_NAME登录
  2. 使用的 docker tag为镜像添加tag
docker tag getting-started YOUR_USER_NAME/getting-started:v1.0
  1. 使用docker push YOUR_USER_NAME/getting-started:v1.0 上传镜像。

持久化存储

容器运行期间对容器内部的存储内容修改,并不会保存下来。为了持久化保存,需要使用容器卷支持。卷提供了容器访问本地文件系统的能力。

命名卷

docker自行管理命名卷的物理位置,使用时只需记住卷的名称。

  1. 通过 docker volume create 创建
docker volumne create todo-db
  1. 删除todo应用的容器(未挂载)
  2. 启动容器,并添加-v标签,挂在一个特殊的卷。利用上面创建的命名卷,挂在到/etc/todos路径,这样该路径下的所有文件就会保存在命名卷中。下次启动后仍然保留。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker —— 从入门到实践》是一本介绍Docker技术的书籍。Docker是一个开源的容器化平台,可以帮助开发者更方便地构建、部署和运行应用程序。这本书从入门到实践的角度,详细介绍了Docker的基本概念、原理和使用方法。 书中首先介绍了Docker的背景和发展历程,包括为什么需要容器化技术以及Docker的优势。接着,作者详细讲解了Docker的安装和配置,包括在不同操作系统上的安装方法。然后,书中以一个个实例来引导读者学习如何使用Docker进行应用程序的容器化和部署。这些实例包括创建镜像、构建容器、管理数据卷等。 在实践部分,书中介绍了如何使用Docker搭建开发环境和测试环境,以及如何使用Docker进行持续集成和持续部署。另外,还介绍了Docker的监控和日志管理、网络配置以及安全性等方面的内容。 这本书的优点在于它结合了理论和实践,既对Docker的原理和概念进行了深入讲解,又提供了丰富的实践案例。通过学习这本书,读者可以系统地掌握Docker的基础知识,并能够利用Docker来管理和部署应用程序。 总的来说,《Docker —— 从入门到实践》是一本很好的Docker入门书籍,适合有一定编程和系统管理基础的读者。它的内容丰富有趣,通俗易懂,通过读这本书,读者可以快速上手使用Docker,并能够在实践中不断深化对容器化技术的理解和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值