Docker 资料整理

本文详述 Docker 的基础知识,从 Docker 初步到深入理解其架构,探讨 Docker 如何作为轻量级虚拟机应用于开发环境。内容涵盖 Dockerfile 的使用、镜像构建、容器运行、配置管理和 DevOps 实践,包括持续集成与交付、网络模拟以及生产环境中的容器编排。通过实例展示了 Docker 在简化部署、加速开发流程和模拟真实环境等方面的优势。
摘要由CSDN通过智能技术生成

目录

Docker 基础

Docker 初探

docker 是什么以及为什么用 docker

理解 Docker-深入引擎室

Docker 架构

Docker 守护进程

Docker 客户端

Docker 与开发

将 Docker 用作轻量级虚拟机

从虚拟机到容器

管理容器的服务

保存和还原工作成果

Docker 日常

卷-持久化问题

运行容器

构建镜像

保持阵型

配置管理——让一切井然有序

配置管理和 Dockerfile

Docker 与 DevOps

持续集成:加快开发流水线

Docker Hub自动化构建

更有效的构建

容器化 CI 过程

持续交付:与 Docker 原则完美契合

推动 Docker 镜像的部署

为不同环境配置镜像

升级运行中的容器

网络模拟:梧桐的现实环境测试

容器通信——超越手工链接

使用 Docker 来模拟真实世界的网络

Docker 和虚拟网络

生产环境中的 Docker

容器编排:管理多个 Docker 容器

多宿主机 Docker

Docker 术语

docker 标签术语

Docker 注册中心的术语


Docker 是一个允许用户"在任何地方构建、分发及运行任何应用"的平台。

Dockerfile 被认为是构建 Docker 镜像的标准方式。

Docker 基础

Docker 初探

docker 是什么以及为什么用 docker

docker 有什么好处

  1. 替代虚拟机

  2. 软件原型

  3. 打包软件

  4. 让微服务架构成为可能

  5. 网络建模

  6. 离线时启用全栈生产力

  7. 降低调试支出

  8. 文档化软件依赖及接触点

  9. 启用持续交付

关键的 docker 命令

命令 目的
docker build 构建一个 Docker 镜像(如:docker build -t app:laster .)
docker run 以容器形式运行一个 Docker 镜像,docker run -d 以守护进程启动
docker commit 将一个 Docker 容器作为一个镜像提交
docker tag 给一个 Docker 镜像打标签,命令:docker tag 镜像 id 想给镜像取的名字
docker exec -i -t 容器名 /bin/bash 将会在正在运行的容器里启动/bin/bash;容器名也可以用容器 id;-i 意味着这条 exec 命令以交互模式运行,-t 确保 exec 将会按照一个终端预期的那样工作
docker image list 查看 docker 镜像列表信息
docker exec -it 容器名 /bin/bash 进入 docker 容器
docker cp 容器名:路径 目标路径 将容器文件下载到目录(如: docker cp carteam-server:/script/car-team-service-1.0-SNAPSHOT.jar /opt )
docker ps 查看正在运行中的容器
docker start 容器名 启动 docker
docker save 将 docker 镜像打包成 tar 包,命令 docker save -o *.tar 镜像名

1. 新建一个目录,如:ids_docker
2. 执行copy.sh文件;或者直接将Dockerfile、run.sh 和应用程序copy到对应的文件夹;
3. 打包成 docker 镜像,执行命令: docker build -t ids:laster .
4. 查找镜像文件,执行命令:docker image list
5. 启动镜像,执行命令:docker run -d imageName
6. 查看docker进程,执行命令:docker ps
7. 将镜像打包成tar,执行命令:docker save -O *.tar imageName

镜像与容器

一个 Docker镜像是由文件和元数据组成的。容器是从镜像中创建的,继承了他们的文件系统,并使用它们的元数据来确定其启动配置。容器是相互分离的,但可以配置进行彼此通信。

构建一个 Docker 应用程序

  • 如何使用 Dockerfile 来创建Docker 镜像

  • 如何为 Docker 镜像打标签以便引用

  • 如何运行新建的 Docker 镜像

创建 新的 Docker 镜像的方式

创建 Docker 镜像有4种标准的方式。如下表:

方法 描述 技巧
Docker 命令/"手工" 使用 docker run 启动一个容器,并在命令行输入命令来创建镜像。使用 docker commit 来创建一个新镜像
Dockerfile 从一个已知基础镜像开始构建,并指定一组有限的简单命令来构建
Dockerfile 及配置管理(configuration management,CM)工具 与 Dockerfile 相同,不过将构建的控制权交给了更为复杂的 CM工具
从头创建镜像并导入一组文件 从一个空白镜像开始,导入一个含有所需文件的 TAR 文件
  1. 编写一个 Dockerfile

    Dockerfile 是一个包含一系列命令的文本文件。如下:

    FROM node //定义基础镜像
    MAINTAINER god_yin@aliyun.com   //声明维护人员
    RUN git clone -q https://github.com/docker-in-practice/todo.git     //克隆 todoapp 代码
    WORKDIR todo    //移动到新的克隆目录
    RUN npm install > /dev/null   //运行 node 包管理器的安装命令(npm)
    EXPOSE 8000   //指定从所构建的镜像启动的容器需要监听这个端口
    CMD ["npm", "start"]      //指定在启动时需要运行的命令

  2. 构建一个 Docker 镜像

    # 构建 Docker 镜像
    docker build Dockerfile文件所在路径
    ​
    # 将镜像打标签
    docker tag 要打标签的镜像ID 为镜像打的标签名

  3. 运行一个 Docker 容器

    #docker run 子命令启动容器,-p 将容器的8000端口映射到宿主机的8000端口上,--name 给容器赋予一个唯一的名字,最后一个参数是镜像
    docker run -p 8000:8000 --name examplel todoapp
    ​
    #运行这个命令查看已经启动和移除的容器,以及其 ID 和状态(就想进程一样)
    docker ps -a
    ​
    # 重新启动容器,这次是在后台运行
    docker start examplel
    ​
    #docker diff 子命令显示了自镜像被实例化成一个容器以来哪些文件受到了影响
    docker diff examplel

  4. Docker 分层

    Docker 分层协助用户管理在大规模使用容器时会遇到一个大问题。想象一下,如果启动了数百甚至数千个 to-do 应用,并且每个应用都需要将文件的一份副本存储在某个地方。

    可想而知,磁盘空间会迅速消耗光!默认情况下,Docker 在内部使用写时复制(copy-on-write)机制来减少所需的磁盘空间量。每当一个运行中的容器需要写入一个文件时,它会通过将该项目复制到磁盘的一个新区域来记录这一修改。在执行 Docker 提交时,这块磁盘新区域将被冻结并记录为具有自身标识符的一个层。

理解 Docker-深入引擎室

Docker 架构

调用 Docker 客户端可以从守护进程获取信息或给它发送指令。守护进程是一个服务器,它使用 HTTP 协议接收来自客户端的请求并返回响应。相应地,它会向其它服务发送请求和接收镜像,使用的同样是 HTTP 协议。

私有 Docker 注册中心是存储 Docker 镜像的一项服务,可以从任何有相应权限的 Docker 守护进程向其发送请求。

Docker 守护进程

Docker 守护进程是用户与 Docker 交互的枢纽,它控制者用户机器上的 Docker 访问权限,管理着容器与镜像的状态,同时代理着与外界的交互。守护进程通常也是服务器,接收来自客户端的请求,为其执行操作。docker 命令是一个客户端,而 Docekr 守护进程则作为服务器对 Docker 容器和镜像进行操作。

开放 Docker 守护进程

# 查看 docker 守护进程
ps -ef | grep -E 'docker (-d|daemon)\b' | grep -v grep
​
#手工重启并向外界开放守护进程
docker daemon -H tcp://0.0.0.0:2375
​
#查看 docker 进程
docker ps -a

以守护进程方式运行容器

在 docker run 命令中使用-d 标志

#-d标志标识以守护进程方式运行容器,-i 标志则赋予容器与 Telnet 会话交互能力,使用 -p 将容器的1234端口公布到宿主机上,--name 标志赋予容器一个名称,以便后期用来对它进行引用,netcat(nc)标志在1234端口上运行一个简单的监听应答(echo)服务器。
docker run -d -i -p 1234:1234 --name daemon ubuntu nc -l 1234

将 Docker 移动到不同分区

<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一一可可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值