[]

容器(Container)是一种轻量级的虚拟化技术,它通过操作系统级的虚拟化,将应用程序及其依赖环境打包在一起,确保应用程序可以在任何环境中一致运行。与虚拟机不同,容器共享宿主操作系统的内核,而不是虚拟化整个操作系统。

容器使用宿主操作系统的内核,通过命名空间(Namespace)和控制组(Cgroups)技术实现资源的隔离和限制。命名空间确保每个容器拥有独立的系统视图,如进程树、网络接口和文件系统;控制组则限制和分配容器的资源使用,如CPU、内存和I/O。

容器化技术通常依赖于镜像(Image)来实现应用程序的打包。一个镜像包含了应用程序运行所需的所有依赖项,包括代码、库、工具和配置文件。容器运行时(如Docker、Podman)负责管理和运行这些容器镜像。

接下来说一下关于Docker的基础概念以及基础命令

1.1 Docker 核心概念

  1. 镜像(Image)
  2. 容器(Container)
  3. Dockerfile
  4. 容器仓库(Registry)
  5. Docker Compose

1.1.1 镜像

镜像 就是一个 模板,包含应用程序和其运行环境(如系统库、配置等)。

镜像是 只读的,可以从 Docker Hub 直接拉取,例如:

docker pull nginx

1.1.2 容器

容器 是基于镜像运行的一个 独立进程,可以认为是“轻量级的虚拟机”。

容器是 可读写的,可以运行、停止、删除:

docker run -d --name my-nginx nginx

这个命令会启动一个 nginx 容器,名称为 my-nginx

1.1.3 Dockerfile

Dockerfile 是一个 构建镜像的脚本,包含应用所需的所有依赖、配置等。

例如,构建一个 Python 应用的 Dockerfile:

FROM python:3.9
COPY app.py /app.py
CMD ["python", "/app.py"]

然后用以下命令构建镜像:

docker build -t my-python-app .

1.1.4 容器仓库

Docker Hub 是官方提供的 公共镜像仓库,类似于 GitHub 存代码,Docker Hub 存放镜像。

企业也可以搭建私有仓库(如 Harbor)。

1.1.5 Docker Compose

用于 管理多个容器,使用 docker-compose.yml 文件描述多个容器如何协同工作。

例如,一个 Nginx + MySQL + PHP (LAMP) 组合可以用 Compose 启动:

docker-compose up -d

1.2 Docker安装指南

安装软件一共就是三个方式

  • 二进制包
  • yum安装
  • rpm安装

在这里说二进制和rpm安装方法,因为yum方法国内被墙安装不了

1.2.1 Docker二进制包

.tgz 文件通常是 Docker 官方发布的静态二进制,适用于无法使用 yumrpm 的情况。

  1. 下载二进制包

    wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
  2. 解压并移动到 /usr/bin

    tar xzvf docker-24.0.7.tgz
    sudo mv docker/* /usr/bin/
  3. 创建 Systemd 服务

    tee /etc/systemd/system/docker.service <<EOF
    [Unit]
    Description=Docker Service
    After=network.target [Service]
    ExecStart=/usr/bin/dockerd
    Restart=always
    User=root [Install]
    WantedBy=multi-user.target
    EOF
  4. 重新加载 systemd 并启动 Docker

    sudo systemctl daemon-reload
    sudo systemctl enable docker --now
  5. 验证安装

    docker version
    docker info

1.2.2 使用 rpm 直接安装 Docker

如果你已经有 .rpm 文件,可以直接使用 rpm 安装。

  1. 下载 Docker RPM 包

    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-24.0.7-1.el7.x86_64.rpm
    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-24.0.7-1.el7.x86_64.rpm
    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.22-3.1.el7.x86_64.rpm

    需要安装下载三个东东

    • docker-ce
    • docker-ce-cli
    • containerd.io
  2. 手动安装 Docker

    rpm -ivh containerd.io-1.6.22-3.1.el7.x86_64.rpm \
    docker-ce-cli-24.0.7-1.el7.x86_64.rpm \
    docker-ce-24.0.7-1.el7.x86_64.rpm
  3. 启动 Docker

    systemctl enable --now docker
  4. 验证安装

    docker --version

1.3 Docker 基础命令

使用Docker前需要了解一下关于Docker的基础命令

1.3.1 镜像管理

1️⃣ 列出本地已有的镜像
docker images
2️⃣ 在 Docker Hub 搜索镜像
docker search <关键字>
3️⃣ 拉取镜像
docker pull <镜像名>
4️⃣ 删除镜像
docker rmi <镜像名>
5️⃣ 给镜像打标签
docker tag <镜像ID> <新名称>
6️⃣ 保存镜像到本地文件
docker save -o <文件名>.tar <镜像名>
7️⃣ 从本地文件加载镜像
docker load -i <文件名>.tar

1.3.2 容器管理

1️⃣ 查看运行中的容器
docker ps
2️⃣ 查看所有容器(包括已停止的)
docker ps -a
3️⃣ 运行一个交互式容器
docker run -it --name <容器名> <镜像名> /bin/bash
4️⃣ 后台运行容器
docker run -d --name <容器名> <镜像名>
5️⃣停止容器
docker stop <容器名/ID>
6️⃣ 启动容器已停止容器
docker start <容器名/ID>
7️⃣ 重启容器
docker restart <容器名/ID>
8️⃣ 删除容器
docker rm <容器名/ID>
9️⃣ 进入运行中的容器
docker exec -it <容器名/ID> /bin/bash
# 这里的/bin/bash具体情况具体分析,有的系统没有/bin/bash需要换,例如/bin/sh
连接到容器终端
docker attach <容器名/ID>

1.3.3 容器日志与监控

1️⃣ 查看容器日志
docker logs <容器名/ID> | commnt -t
2️⃣ 查看容器进程
docker top <容器名/ID>
3️⃣ 查看容器详细信息
docker inspect <容器名/ID>
4️⃣ 查看容器资源占用
docker stats <容器名/ID>

1.3.4 网络管理

1️⃣ 查看 Docker 网络
docker network ls
2️⃣ 创建自定义网络
docker network create <网络名>
3️⃣ 查看网络详情
docker network inspect <网络名>
4️⃣ 将容器连接到网络
docker network connect <网络名> <容器名/ID>
5️⃣ 断开容器与网络的连接
docker network disconnect <网络名> <容器名/ID>

1.3.5 数据管理

1️⃣ 列出所有卷(volume)
docker volume ls
2️⃣ 创建数据卷
docker volume create <卷名>
3️⃣ 查看卷详情
docker volume inspect <卷名>
4️⃣ 删除卷
docker volume rm <卷名>
5️⃣ 挂载数据卷到容器
docker run -v <宿主机路径>:<容器路径> <镜像名>

1.3.6 构建镜像

1️⃣ 根据 Dockerfile 构建镜像
docker build -t <镜像名:标签> <Dockerfile路径>
2️⃣ 基于容器创建新镜像
docker commit <容器ID> <新镜像名>

Docker容器详解的更多相关文章

  1. docker 容器详解

    Docker 是一个开源的应用容器引擎,基于Go语言 并遵Apache2.0协议开源,也是一种虚拟化技术.让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux ...

  2. docker 容器 详解

    docker run  ## 创建一个新容器 [root@localhost ~]# docker run --help Usage: docker run [OPTIONS] IMAGE [COMM ...

  3. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  4. [Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。

    一.Spring Ioc容器详解(1) 20131105 1.一切都是Bean Bean可是一个字符串或者是数字,一般是一些业务组件. 粒度一般比较粗. 2.Bean的名称 xml配置文件中,id属性 ...

  5. C++ STL bitset 容器详解

    C++ STL bitset 容器详解 本篇随笔讲解\(C++STL\)中\(bitset\)容器的用法及常见使用技巧. \(bitset\)容器概论 \(bitset\)容器其实就是个\(01\)串 ...

  6. Docker系列10—容器编排工具Docker Compose详解

    本文收录在容器技术学习系列文章总目录 1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置 ...

  7. Docker系列--容器编排工具Docker Compose详解

    1.Docker Compose 概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用Compose文件来配置应用程序的服务.然后,使用单个命令,您 ...

  8. Docker 架构详解 - 每天5分钟玩转容器技术(7)

    Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...

  9. 第 2 章 容器架构 - 007 - Docker 架构详解

    Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...

  10. docker 操作命令详解

    docker attach命令-登录一个已经在执行的容器 docker build 命令-建立一个新的image docker commit命令-提交一个新的image docker cp命令-将容器 ...

随机推荐

  1. [转]OpenLayers基于Vue项目的搭建

    主要内容上次介绍了什么是OpenLayers以及其他的可以GIS工具,这次说说如何基于Vue搭建OpenLayers的项目,并且实现地图的加载. 一.vue项目搭建1.全局安装vue-cil npm ...

  2. Python学习(四)——配套《PyTorch深度学习实战》

    1. Python中字符串的相加和相乘 在Python中,字符串可以通过加号(+)进行相加(连接),也可以通过乘号(*)进行相乘(重复).以下是这两种操作的详细说明和示例: 字符串的相加(连接) 字符 ...

  3. deeplearning4j~实现简单模型训练和测试

    DeepLearning4j (DL4J) 是一个开源的深度学习库,专为 Java 和 Scala 设计.它可以用于构建.训练和部署深度学习模型.以下是关于如何使用 DL4J 的基本指南以及一个简单的 ...

  4. Appium_WebDriverAgent安装

      一.WebDriverAgent安装到ios测试设备 a) 切换到appium 的appium-webdriveragent目录(/Applications/Appium.app/Contents ...

  5. c# set Webbowser version with WPF/Winform app

    <Window x:Class="TestWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...

  6. 字节流:FileInputStream和FileOutputStream的使用

    /** * 测试FileInputStream和FileOutputStream的使用 * * 结论: * 1. 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 * 2. 对于非 ...

  7. 所生成项目的处理器架构“MSIL”与 “x86”不匹配

    在 .net 生成时如果修改过某个类库的平台目标,那么通常会出现下面的警告: 之所以产生这个问题是因为类库的"平台目标"不统一,如果选择了 x86, 那么解决方案中所有的项目都应设 ...

  8. 天翼云GPU云主机:共享信息技术与虚拟机的完美融合

    本文分享自天翼云开发者社区<天翼云GPU云主机:共享信息技术与虚拟机的完美融合>,作者:不知不觉 在云计算领域,GPU云主机已经成为了一个备受瞩目的焦点.它的出现改变了传统IT架构的方式, ...

  9. Q:查看锁表进程,及杀死所有锁表进程sql

     查看锁表进程 SELECT DISTINCT decode(s.inst_id, 1, 'DB1', 2, 'DB2') 数据库服务器, decode(s.BLOCKING_SESSION, '', ...

  10. FLink参数pipeline.operator-chaining介绍

    1.当使用flink提交一个任务,没有给算子设置并行度情况下,默认所有算子会chain在一起,整个DAG图只会显示一个算子,虽然有利于数据传输,提高程序性能,但是无法看到数据的输入和疏忽,业绩反压相关 ...