Docker 工作必备基础知识(一)

Docker 技术

Docker 背景

Docker 是由 Docker 公司于 2013 年发布的一款开源容器化平台。它基于 Linux 容器(LXC)技术和其他开源项目(如 libcontainer)
的发展,通过提供一套简化的工具和接口,使得容器化应用程序的开发、部署和管理更加方便和可靠。

Docker 产生的原因主要有以下几个方面:

应用程序环境一致性:在传统的应用程序开发和部署中,由于环境的差异性,应用程序在不同的环境中运行可能会出现问题。Docker 
的出现解决了这个问题,通过容器化的方式,可以将应用程序及其所有依赖项打包成一个独立的、可移植的镜像,保证在任何环境中
都能一致地运行。

快速部署和扩展:传统的虚拟化技术需要启动完整的虚拟机来运行应用程序,而 Docker 则是利用宿主机的操作系统内核,以轻量级的
容器来运行应用程序。这使得 Docker 容器的启动速度非常快,可以在几秒钟内启动。同时,由于容器之间相互隔离,可以快速、简便
地进行应用程序的部署和扩展。

资源利用率高:Docker 不同于传统虚拟化技术,它通过共享宿主机的操作系统内核,多个容器可以在同一台宿主机上运行,从而实现更
高的资源利用率。这减少了虚拟化带来的额外开销,提高了系统性能和资源利用效率。

Docker 的一些主要特点包括:

轻量级和快速启动:Docker 容器与虚拟机相比更加轻量级,容器的启动速度非常快,可以在几秒钟内启动。

环境隔离和安全性:Docker 提供了环境隔离,使得容器之间相互隔离,保证了应用程序的安全性和稳定性。

可移植性和可重复性:Docker 镜像可以在不同的环境中移植和部署,并且保持一致性,确保应用程序能够在各种环境中可重复地运行。

灵活性和可扩展性:Docker 提供了灵活的部署和扩展机制,可以根据需求快速部署和扩展应用程序。

总之,Docker 的出现解决了应用程序开发、部署和管理中的许多挑战,提供了一种更加高效、可移植和可靠的容器化解决方案。它的特点
包括轻量级、快速启动、环境隔离、可移植性和可扩展性,使得它成为现代化应用程序开发和部署的重要工具。

Docker 基础知识

Docker是一种开源的容器化平台,它可以帮助开发者将应用程序及其相关依赖打包到一个独立的容器中,从而实现快速部署、可移植性和可扩展性。下面是一些Docker的基本概念:

  • 容器(Container):容器是Docker的基本组件,它是一个独立、可执行的软件包,包含了应用程序及其所有的依赖项(如库文件、配置文件等)。容器是轻量级、隔离的,可以在不同的环境中进行部署,而无需担心应用程序的兼容性问题。

  • 镜像(Image):镜像是容器的基础,它是一个只读的模板,用于创建容器。镜像可以包含操作系统、应用程序和一些配置信息。你可以从Docker Hub或其他仓库中拉取现有的镜像,也可以通过编写Dockerfile来创建自定义的镜像。

  • 仓库(Repository):仓库是用于存储和分享Docker镜像的地方。Docker Hub是一个公共的仓库,你可以在其中找到许多官方和社区维护的镜像。此外,你也可以创建私有仓库来存储和管理自己的镜像。

  • Docker引擎(Docker Engine):Docker引擎是Docker的核心组件,它负责管理和运行容器。它包含了Docker守护进程(dockerd)和客户端工具(docker命令行工具或Docker API)。

  • Dockerfile:Dockerfile是一个文本文件,用于定义如何构建Docker镜像。通过编写Dockerfile,你可以指定基础镜像、安装软件包、配置环境变量等操作,最终构建出一个可用的镜像。

  • Docker Compose:Docker Compose是一个用于定义和管理多个容器应用的工具。通过编写一个YAML文件,你可以定义多个服务(每个服务对应一个容器),并指定它们之间的依赖关系、网络配置等。

Docker 安装


更新系统:
sudo yum update

安装必要的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker的官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装Docker引擎:
sudo yum install docker-ce

启动Docker服务:
sudo systemctl start docker

设置Docker服务开机自启:
sudo systemctl enable docker

验证Docker安装是否成功:
sudo docker run hello-world

Docker 命令

配置文档
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
  1. 镜像管理:

    • docker images:列出本地所有的镜像。
    • docker pull <镜像名>:拉取指定的镜像到本地。
    • docker build -t <镜像名> <Dockerfile路径>:根据Dockerfile构建自定义镜像。
    • docker push <镜像名>:将本地镜像推送到仓库。
  2. 容器管理:

    • docker run <镜像名>:根据指定的镜像创建并启动容器。
    • docker ps:列出当前正在运行的容器。
    • docker start <容器ID或名称>:启动已停止的容器。
    • docker stop <容器ID或名称>:停止正在运行的容器。
    • docker restart <容器ID或名称>:重启容器。
    • docker rm <容器ID或名称>:删除指定的容器。
  3. 容器操作和日志:

    • docker exec -it <容器ID或名称> <命令>:在正在运行的容器中执行命令。
    • docker logs <容器ID或名称>:查看容器的日志信息。
    • docker inspect <容器ID或名称>:查看容器的详细信息。
  4. 网络管理:

    • docker network ls:列出所有的网络。
    • docker network create <网络名称>:创建一个自定义网络。
    • docker network connect <网络名称> <容器ID或名称>:将容器连接到指定的网络。
    • docker network disconnect <网络名称> <容器ID或名称>:将容器从指定的网络中断开。
  5. 数据卷和挂载:

    • docker volume ls:列出所有的数据卷。
    • docker volume create <卷名称>:创建一个新的数据卷。
    • docker run -v <本地路径>:<容器路径> <镜像名>:挂载本地路径到容器中。
  • 示例
  拉取一个镜像到本地:

  docker pull ubuntu:latest

  构建自定义镜像:

   创建一个名为 Dockerfile 的文件,内容如下:

   FROM ubuntu:latest
   RUN apt-get update && apt-get install -y <package_name>

   使用以下命令构建镜像:
 
   docker build -t my-ubuntu .

   将本地的镜像推送到仓库,执行该命令需要有对应权限,此处按照下述配置私有仓库后,则先登录验证,-u 指定配置的私有镜像
   仓库有权限的用户名称,registry:5000 为配置的私有镜像仓库地址,输入密码后登录:
   
   docker login -u rtm registry:5000
   
   登录后再进行push,指定镜像的仓库地址:registry:5000,my-ubuntu 为本地镜像名称,latest 指定 tag 标签:
   
   docker push  registry:5000/my-ubuntu:latest
 

 创建并运行一个新的容器从一个镜像, -d 后台运行,--name 指定容器名称 nginx 镜像名称:
 docker run -d --name my-container nginx

 查看刚刚运行的容器:
 docker ps 

 启动停止的容器:
 docker start my-container

 停止指定容器:
 docker stop my-container

 重启容器:
 docker restart my-container

 删除容器:
 docker rm my-container

 进入容器内部执行命令:
 docker exec -it my-container bash

 查看容器的日志,-f 按照日志输出 -t 打印时间戳 -n 输出日志行数:
 docker logs -f -t -n 100 my-container

 查看容器详细信息:
 docker inspect my-container

 查看所有网络信息:
 docker network ls

 创建一个自定义网络:
 docker network create my-network

 将容器连接到指定的网络:
 docker network connect my-network my-container

 将容器从指定的网络中断开:
 docker network disconnect my-network my-container

 列出所有的数据卷:
 docker volume ls

 创建一个新的数据卷,该逻辑卷真实存储为docker容器安装目录,可以通过docker inspect my-volume 查看真实存储路径:
 docker volume create my-volume

 将本地路径挂载到容器中,挂载后可以进入容器查看该目录是否存在,第一个/opt/ws 为主机 路径,第二个/opt/ws 为映射
 到容器内的路径,可以自定义:
 docker run -d -v /opt/ws/:/opt/ws --name my-container nginx

私有镜像仓库

Docker 的默认镜像仓库是 Docker Hub(https://hub.docker.com)。Docker Hub 是一个公共的镜像注册中心,你可以在其中找到各种
公共镜像,并且可以上传和分享你自己的镜像。

当你使用 docker pull 命令时,如果没有指定仓库地址,Docker 将默认从 Docker Hub 拉取镜像。例如,docker pull ubuntu 将从 
Docker Hub 拉取名为 "ubuntu" 的官方镜像。

如果你想使用其他镜像仓库作为默认仓库,可以进行相应的配置。在 Docker 的配置文件中,你可以修改 daemon.json 文件来指
定默认镜像仓库。在 daemon.json 文件中,添加或修改 registry-mirrors 配置项,将镜像仓库的地址加入其中。

Docker 的配置文件 daemon.json 的位置,在 Linux 上,通常位于 /etc/docker/ 目录下,如果找不到该目录或文件,你可以手动
创建 daemon.json 文件并将其放置在正确的位置。确保以管理员权限进行操作。
  • 创建
{
	 "log-driver": "json-file",
	 "log-opts": {"max-size": "500m","max-file": "5"},
	 "default-ulimits":{"nofile":{"Name": "nofile","Hard": 65535,"Soft": 65535}},
	 "data-root":"/docker",
	 "insecure-registries": ["registry:5000"],
	 "ipv6":false,
	 "fixed-cidr-v6": "2001:db8:1::/64",
	 "iptables":true,
	 "bip": "172.17.0.1/16"
}

"registry-mirrors":指定一个镜像仓库的地址,以加速从该仓库拉取镜像的速度。
"insecure-registries":指定一个不安全的镜像仓库地址,Docker 将允许从该仓库拉取和推送镜像。
"max-concurrent-downloads":指定并发下载镜像的最大数量。
"max-concurrent-uploads":指定并发上传镜像的最大数量。
"debug":启用 Docker 的调试模式,用于输出更详细的日志信息

官方文档链接:https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
  • 安装 Docker Registry:
Docker Registry 是 Docker 官方提供的一个开源镜像仓库

1、docker run -d -p 5000:5000 --restart=always --name registry registry:2

这将在本地启动一个 Docker Registry 容器,监听在 5000 端口,并以默认配置运行,上述配置后需要在 /etc/hosts配置域名解析,否则
无法推送,网络无法解析域名 127.0.0.1 registry


2、配置 Docker 客户端使用私有镜像仓库:/etc/docker/daemon.json
{
     "insecure-registries": ["registry:5000"],
}

3、重启 Docker 服务
sudo systemctl restart docker
  • 配置镜像仓库认证
1、创建 Docker 配置文件:

在用户的 主目录下 创建 .docker/config.json 文件(如果文件不存在),并将以下内容添加到文件中:
{
  "auths": {
    "your-registry-hostname:5000": {
      "auth": "base64-encoded-username-and-password"
    }
  }
}
将"your-registry-hostname:5000" 替换为你的私有镜像仓库的地址。
eg:
{
  "auths": {
    "registry:5000": {
      "auth": "cnRtOnJ0bTkzMDUyNSwu"
    }
  }
}


2、生成认证凭据:

使用用户名和密码生成 auth 值的 base64 编码。你可以使用以下命令生成 base64 编码的用户名和密码:

echo -n 'username:password' | base64

将 "username:password" 替换为你私有镜像仓库的用户名和密码。

3、更新认证凭据:

将生成的 base64 编码的用户名和密码替换到 auth 字段的值中。

4、保存并关闭文件。

现在,当你使用 Docker 推送或拉取镜像时,Docker 将自动使用认证凭据来进行身份验证。
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集: JAVA核心知识点整理-282页 Java与哈希算法.docx Java中Lambda表达式的使用.docx JAVA多线程之线程间的通信方式.docx Java注解详解.docx Java线程池.docx JDK1.8Stream操作.docx JDK8有新特性.docx JVM堆三代.docx JVM的垃圾回收机制详解和调优.docx Spring源码分析之IoC.docx 关于线程和线程池的学习与使用.docx 深入理解JVM垃圾回收机制.docx 深入理解多线程实现的另一种方式Callable.docx 红黑树简介.docx 线程死锁及解决办法.docx 线程锁之重入锁.docx 线程间的通信.docx 虚拟机内存结构和垃圾回收docx.docx 锁分类的了解.docx 集合的扩容机制.png SpringMVC部分.docx Spring部分.docx 第一题.pdf 第七题 谈谈MySQL支持的事务隔离级别 (1).pdf 第三题 对比HashTable HashMap TreeMap有什么不同.pdf 第二题 Exception Error区别.pdf 第五题 如何保证集合是线程安全的.pdf 第八题 Java并发类库提供的线程池有哪几种 分别有什么特点.pdf 第六题 synchronized和ReentLock有什么区别.pdf 第四题 ArrayList LinkedList Vector的区别.pdf docker讲得最清楚.doc Dubbo是什么?能做什么?.doc java 基于TCP协议的Socket编程和通信.doc Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别.doc MySQL千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分).doc redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级.doc RPC (Remote Procedure Call)即远程过程调用.doc Spring 面试问题 TOP 50(干货推荐收藏必备).doc springboot常见面试题.doc svn和git的区别及适用场景.doc ZooKeeper.doc 为什么分布式一定要有Redis.doc 分布式、高并发、多线程,到底有什么区别.doc 分布式事务.doc 四款消息队列大比拼.docx 多台web服务器之间共享session.docx 消息中间件Kafka与RabbitMQ.doc 电商项目描述注意点.doc 秒杀业务的流量削峰场景如何解决.doc 面试题:Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点.doc
### 回答1: Docker是一款几乎可以运行任何应用程序的开源容器引擎。随着云计算和DevOps的普及,Docker已经成为从开发、测试到部署的必备工具。如果你想深入学习Docker,建议先下载《Docker从入门到实战PDF》。 《Docker从入门到实战PDF》是一本权威详细的Docker实践指南,由国内知名的Docker实践者编写。它从Docker的基本概念、安装、命令行操作到Docker的高级特性,以及介绍了如何将Docker用于构建应用、CI/CD流水线和容器集群管理等实践案例。这本书还涵盖了个人笔记、调试技巧、错误处理和最佳实践等方面。 如果你是一个开发人员或运维人员,想要更好地了解Docker容器化技术,那么《Docker从入门到实战PDF》是非常适合你的。这本书非常详细,内容涵盖了各种Docker使用场景,你可以通过下载PDF版的电子书免费阅读学习。通过实践,你可以深入了解Docker并且掌握如何使用它构建更加高效的应用程序和云计算环境。 ### 回答2: Docker是一款流行的容器化技术工具,它能够快速、高效地构建、打包和部署应用程序。由于其灵活性和易用性,越来越多的企业和开发者开始把Docker应用到他们的工作中。因此,学习如何使用Docker已经成为了许多人必备的技能。 对于想要学习Docker的人来说,《Docker从入门到实战》是一本非常好的参考书籍。它由德国作者Tobias Gesellchen所著,包含了有关Docker基础知识、实践和最佳实践等方面的内容。 这本书的内容分为四个部分: 第一部分介绍了Docker基础,并展示如何在自己的计算机上安装和使用Docker。 第二部分主要讲解了如何使用Docker来构建和打包应用程序,以及如何使用Docker Compose来管理复杂的应用程序。 第三部分重点关注了Docker容器和网络的安全性,以及如何扩展和优化Docker容器的性能。 最后一部分提供了一些使用Docker的最佳实践和案例研究,以帮助读者快速掌握Docker的运用。 这本书不仅适用于Docker的初学者,还适合有经验的开发者和系统管理员。读完本书,您将会对Docker工作原理有清晰的了解,掌握Docker的基础操作,应用Docker构建并部署应用程序,并可以使用Docker的最佳实践来提高您的效率。 总之,《Docker从入门到实战》是一本非常有用的书籍,能够帮助您更好地了解和使用Docker。您可以在各大电子书商城中购买或下载PDF版本来阅读。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值