首页 > 其他分享 >Docker 理论与实操指南

Docker 理论与实操指南

时间:2024-11-23 18:03:30浏览次数:6  
标签:指南 容器 ID 实操 ubuntu 镜像 docker Docker

1. 简介

Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 的官方地址是 https://docs.docker.com/

无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要认识和掌握 Docker,以节约有限的时间和资源。

2. 特点
  • 轻量化
    Docker 容器使用的资源非常少,相比虚拟机技术,一个完整的 Docker 镜像通常只有几十 MB,启动几乎是立即的。

  • 标准化
    Docker 对应用及其依赖进行标准化打包,解决了“在我机器上可以运行,在你机器上就不行”的问题。

  • 可移植性
    可以在不同的平台和不同的环境中运行,例如开发环境、测试环境和生产环境。

  • 版本管理和组件重用
    Docker 可以进行版本管理、组件重用、快速部署等。

  • 隔离性
    Docker 能够提供独立的运行环境,应用程序在 Docker 容器的运行和外部世界进行隔离。

3. 优点
  • 环境一致性
    在开发、测试和生产环境之间建立一致性,消除了“在我电脑上运行得好好的”这种情况。

  • 隔离性和安全性
    Docker 容器之间彼此隔离,一个容器的崩溃不会影响到其他的容器,提供了额外的层次的安全性。

  • 便于持续集成和持续部署
    Docker 能够以最小的代价快速地启动和关闭,这让持续集成和持续部署变得非常简单。

  • 微服务架构
    Docker 非常适合微服务架构。每个微服务可以运行在自己的容器中,每个容器之间是相互隔离的,有自己独立的运行环境。

  • 资源利用率高
    Docker 容器共享主机的内核,不需要像虚拟机那样为每个应用程序运行一个完整的操作系统,资源占用更少,启动更快。

4. 核心概念
  • Docker 的工作流程

    1. 从 Docker 仓库中获取 Docker 镜像。
    2. 用这个镜像创建 Docker 容器。
    3. 对容器进行操作(启动、停止等)。
  • 4.1 镜像 Image

    • 理解
      镜像是 Docker 容器的模板,用于创建 Docker 容器的基础。
    • 内在
      镜像包含运行容器所需的所有内容,包括代码、运行时、库、环境变量和配置文件等。镜像由文件系统叠加而成,每一层都代表 Dockerfile 中的一条指令,层与层之间是互相依赖的。
  • 4.2 容器 Container

    • 理解
      容器是 Docker 镜像运行时的实体,可以被创建、启动、停止、删除、暂停等。
    • 特性
      每个容器之间是相互隔离的、保护的,每个容器都有自己的文件系统,每个容器之间运行的进程都是相互隔离的。容器的定义和镜像几乎一样,也是一系列的层的集合,不同的是容器的最上面那一层是可读可写的,而镜像的最上层是只读的。
  • 4.3 仓库 Repository
    用来保存镜像的地方,分为公开和私有两种形式:

    • 公开仓库
      如 DockerHub,是最知名的公开 Docker 仓库,可以被所有用户使用。
    • 私有仓库
      可以在本地部署,只能被内部用户使用。
5. 核心架构
  • Docker 客户端
    负责与 Docker 守护进程进行通信。
  • Docker 守护进程
    负责管理 Docker 镜像和 Docker 容器。
  • Docker 镜像
    负责生成 Docker 容器实例。
  • Docker 容器
    包含了应用程序和其所依赖的环境。
  • Docker Hub
    已经制作好了很多镜像,可以直接使用。
6. Docker 环境
  • 基本原理
    Docker 使用 Linux 内核的命名空间(Namespaces)和控制组(Control Groups,简称 cgroups)来实现容器的隔离和资源限制。
7. Linux 实操
7.1 Docker 安装
  • 自动安装

    • 官方的一键安装方式
      curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
      
    • 国内 daocloud 一键安装命令
      curl -sSL https://get.daocloud.io/docker | sh
      
  • 手动安装

    # 安装依赖工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    # 配置镜像源,使用阿里云的源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makecache fast
    
    # 安装 Docker
    yum install docker-ce docker-ce-cli containerd.io
    
7.2 快速入手
  • 菜鸟教程
    https://www.runoob.com/docker/docker-hello-world.html

  • 案例

    # 0. 查看 Docker 服务运行状态
    systemctl status docker
    
    # 1. 查看本地镜像
    docker images
    
    # 2. 从 Docker Hub 拉取基础镜像,我们此处选择 ubuntu 镜像
    docker search ubuntu
    docker search ubuntu --no-trunc
    docker pull ubuntu
    
    # 3. 再次查看本地镜像
    docker images
    docker image ls
    
    # 4. 使用 ubuntu 镜像构建容器,并交互式运行容器,并在容器中执行 LS 命令
    docker run -it ubuntu:latest /bin/bash
    
    # 5. 退出容器
    exit
    
    # 6. 查看本地容器实例
    docker ps
    docker ps -a
    
    # 7. 再次启动停止的容器
    docker start 容器ID
    
    # 8. 再次进入容器
    docker exec -it 容器ID /bin/bash
    
    # 9. 退出容器,并停止容器
    exit
    docker stop 容器ID
    
7.3 Docker 镜像操作
  • 查看镜像

    docker images             # 查看所有镜像
    docker images -q          # 只查看镜像的ID
    docker images --no-trunc  # 显示镜像完整信息
    
  • 搜索镜像

    docker search 镜像名
    docker search python
    docker search ubuntu
    
  • 下载镜像

    docker pull 镜像名:版本     # 不指定 TAG, 则默认使用 latest
    docker pull ubuntu:latest
    
  • 运行镜像

    docker run -it 镜像名:版本 程序                # 交互式运行容器
    docker run -it --name=标签名 镜像名:版本 程序   # 容器指定名字
    docker run -itd 镜像名:版本 程序               # 后台运行容器
    docker run -itd ubuntu:latest /bin/bash
    
  • 删除镜像

    docker rmi -f 镜像名                   # 删除指定镜像
    docker rmi -f 镜像ID                   # 删除指定镜像
    docker rmi -f $(docker images -qa)    # 删除所有镜像
    
  • 保存镜像

    docker save 镜像名:版本 -o xxx.tar
    docker save ubuntu:latest -o ubuntu.tar
    
  • 加载镜像

    docker load -i xxx.tar
    docker load -i ubuntu.tar
    
7.4 Docker 容器操作
  • 查看容器

    docker ps       # 查看正在运行的容器实例
    docker ps -a    # 查看正在运行或者已停止的容器实例
    
  • 运行容器

    docker start 容器ID     # 启动容器
    docker restart 容器ID   # 重启容器
    
  • 停止容器

    docker stop 容器ID
    
  • 删除容器

    docker rm -f 容器ID              # 删除指定容器
    docker rm -f $(docker ps -qa)   # 删除所有容器
    
  • 进入容器

    docker attach 容器ID
    # attach 进入后退出终端会导致容器停止
    
    docker exec -it 容器ID /bin/bash
    # exec 不会导致容器停止
    
  • 容器导出

    docker export 容器ID > xxx.tar
    
  • 容器导入

    docker import xxx.tar xxx:tag
    
7.5 Docker 自动构建镜像
  • 1. Dockerfile 编写

    # 继承的基础镜像
    FROM python:3.7.5
    MAINTAINER "wechat:chinesecpp, email:chinacpp@hotmail.com"
    
    # 安装 app 需要的 Python 包
    RUN pip install pandas flask scikit-learn jieba zhconv -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    # 设置工作目录
    WORKDIR /root/app
    
    # COPY 命令使用的是相对路径
    COPY app/ /root/app
    
    # 显式声明容器服务监听的端口
    EXPOSE 5000
    
    # 当启动容器时默认执行的命令
    CMD ["python", "app.py"]
    

    接下来,使用下面命令构建 Docker 镜像:

    docker build -t spam:1.0 .
    
  • 2. 镜像使用
    镜像构建完成之后,启动镜像创建容器实例:

    docker run -d -p 8000:5000 spam:1.0
    

    持久化本地存储镜像:

    docker save spam:1.0 -o spam.tar
    

标签:指南,容器,ID,实操,ubuntu,镜像,docker,Docker
From: https://blog.csdn.net/DREAM_xs/article/details/143921830

相关文章

  • docker 存储卷实验
    需求:创建1个myvolume1的空卷,将其挂载给web1的容器,挂载目录/usr/local/apache2/htdocs运行两个web2web3的容器,更新web2中容器内容为Thisisatest!通过宿主机访问web3查看输出内容。dockervolumecreatemyvolume1dockerrun-d--nameweb2-p82:80-vmyvolume1:/usr/l......
  • 电脑的ip地址怎么换掉:全面指南
    在数字化时代,电脑已成为我们日常生活和工作中不可或缺的一部分。而IP地址,作为电脑在网络世界中的唯一身份标识,其重要性不言而喻。有时,出于安全、隐私或访问特定资源的需要,我们可能需要更换电脑的IP地址。本文将详细阐述如何在不同网络环境下更换电脑的IP地址,包括家庭网络、公共......
  • CEF127编译指南 Windows篇-安装Git和Python(三)
    1.引言在前面的文章中,我们已经完成了VisualStudio2022的安装和配置。接下来,我们需要安装两个同样重要的工具:Git和Python。这两个工具在CEF的编译过程中扮演着关键角色。Git负责管理和获取源代码,而Python则用于运行各种编译脚本和自动化任务。正确安装这两个工具将为我......
  • docker搭建私有的仓库
    docker搭建私有仓库一、为什么要搭建私有的仓库?因为在国内,访问:https://hub.docker.com/会出现无法访问页面。。。。(已经使用了魔法)当然现在也有一些国内的镜像管理网站,比如网易云镜像服务、DaoCloud镜像服务、阿里云镜像服务等。但是有些收费的。戛然而止了。我们可以自......
  • 本地Docker部署开源可视化实时监控工具Netdata并实现远程监测系统性能数据
    文章目录前言1.关于Netdata2.本地部署Netdata3.使用Netdata4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Netdata公网地址前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署Netdata,并结合cpolar内网穿透工具实现远程访问本地服务器上的Netdata,轻......
  • Vue.js 性能优化指南:掌握 keep-alive 的使用技巧
    前言在现代前端开发中,性能优化和用户体验一直是开发者关注的重点。对于使用Vue.js构建的单页应用(SPA)来说,频繁的组件切换可能带来性能问题和状态丢失等挑战。Vue提供的keep-alive组件为这一问题提供了优雅的解决方案。本文将深入探讨keep-alive的作用及其使用方法,帮......
  • docker命令
    文章目录docker操作命令1.帮助命令2.操作镜像相关3.操作容器命令4.查看容器日志相关5.查看镜像的元信息6.进入正在运行的容器7.拷贝文件相关docker操作命令1.帮助命令dockerversion#显示docker的版本信息。dockerinfo#显示docker的系统信息,包......
  • Sickos1.1 详细靶机思路 实操笔记
    Sickos1.1详细靶机思路实操笔记免责声明本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动,您将独自承担全部法律责任。本博客明确表......
  • CentOS Docker 安装
    参考地址:https://www.runoob.com/docker/centos-docker-install.html CentOSDocker安装Docker支持以下的64位CentOS版本:CentOS7CentOS8更高版本...使用官方安装脚本自动安装安装命令如下:curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyu......
  • WeUI 小白入门指南教程
    WeUI是什么?WeUI是由腾讯团队开发的一个轻量级前端UI库,它基于微信设计指南,旨在帮助开发者快速构建美观且一致的微信小程序或移动网页界面。WeUI采用了BEM(BlockElementModifier)国际命名规范,确保了代码的简洁性和高复用性。WeUI官方Github:https://github.com/Tence......