docker详细笔记

Docker详细笔记

目录

  1. Docker简介
    • 什么是Docker
    • Docker的优势
  2. Docker基础概念
    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)
  3. Docker环境安装
    • 在Windows上安装Docker
    • 在macOS上安装Docker
    • 在Linux上安装Docker
  4. Docker基本命令
    • 镜像命令
    • 容器命令
  5. Docker进阶操作
    • Dockerfile详解
    • 数据卷(Volumes)
    • 网络配置
  6. Docker实践应用
    • 使用Docker构建Web应用
    • 使用Docker进行持续集成/持续部署(CI/CD)
  7. 总结

Docker简介

什么是Docker

Docker是一个开源的容器化平台,旨在使应用程序在任何环境中都可以简单和一致地运行。通过使用操作系统层的虚拟化,Docker可以将软件包及其依赖项封装成一个标准化的单元(即容器)。

Docker的优势

  • 轻量级: 与传统的虚拟机相比,Docker容器更轻量级,可以在几秒钟内启动或停止。
  • 一致性: 通过Docker镜像,可以确保在本地开发的应用程序与在生产环境中运行的应用程序一致。
  • 高效资源使用: Docker可以共享主机的操作系统内核,从而有效减少系统资源消耗。

Docker基础概念

镜像(Image)

镜像是一个只读的模板,包含了创建Docker容器的指令。它类似于虚拟机中的快照。

容器(Container)

容器是镜像的一个运行实例。它不仅包含镜像中的全部内容,且添加了额外的应用程序状态。如果说镜像是建筑图纸,容器就是建筑成品。

仓库(Repository)

仓库是一组相关的镜像。通常,一个仓库包含多个版本的镜像。最常用的仓库是Docker Hub。

Docker环境安装

在Windows上安装Docker

  1. 下载并访问Docker Desktop for Windows

  2. 安装并运行Docker Desktop

  3. 通过命令行验证

    sh 复制代码
    docker --version

在macOS上安装Docker

  1. 下载并访问Docker Desktop for Mac

  2. 安装并运行Docker Desktop

  3. 通过命令行验证

    sh 复制代码
    docker --version

在Linux上安装Docker

以Ubuntu为例:

  1. 更新APT包索引

    sh 复制代码
    sudo apt-get update
  2. 安装依赖包

    sh 复制代码
    sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  3. 添加Docker官方GPG密钥

    sh 复制代码
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. 设置稳定版仓库

    sh 复制代码
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. 安装Docker引擎

    sh 复制代码
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. 通过命令行验证

    sh 复制代码
    docker --version

Docker基本命令

镜像命令

  1. 拉取镜像

    sh 复制代码
    docker pull <image_name>
  2. 列出本地镜像

    sh 复制代码
    docker images
  3. 删除镜像

    sh 复制代码
    docker rmi <image_id>

容器命令

  1. 创建并运行容器

    sh 复制代码
    docker run -it <image_name>
  2. 列出运行中的容器

    sh 复制代码
    docker ps
  3. 停止容器

    sh 复制代码
    docker stop <container_id>
  4. 删除容器

    sh 复制代码
    docker rm <container_id>

Docker进阶操作

Dockerfile详解

Dockerfile是一个用于定义Docker镜像的构建步骤的文本文件。

示例Dockerfile:

dockerfile 复制代码
# 基础镜像
FROM ubuntu:20.04

# 维护者信息
LABEL maintainer="example@example.com"

# 安装依赖
RUN apt-get update && apt-get install -y nginx

# 复制文件到镜像
COPY . /var/www/html

# 暴露端口
EXPOSE 80

# 容器启动命令
CMD ["nginx", "-g", "daemon off;"]

数据卷(Volumes)

数据卷用于持久化数据,即使容器删除,数据仍然保留。

创建数据卷并挂载到容器:

sh 复制代码
docker run -it -v /host/path:/container/path <image_name>

网络配置

Docker允许通过桥接模式、自定义网络等方式配置网络。

创建自定义网络:

sh 复制代码
docker network create <network_name>

将容器加入自定义网络:

sh 复制代码
docker run -it --network <network_name> <image_name>

Docker实践应用

使用Docker构建Web应用

创建一个简单的Node.js应用并使用Docker进行容器化。

  1. 创建项目文件结构:

    myapp/
    ├── Dockerfile
    ├── package.json
    └── server.js
    
  2. 编写 package.json

    json 复制代码
    {
      "name": "myapp",
      "version": "1.0.0",
      "main": "server.js",
      "dependencies": {
        "express": "^4.17.1"
      },
      "scripts": {
        "start": "node server.js"
      }
    }
  3. 编写 server.js:

    js 复制代码
    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello, Docker!');
    });
    
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
  4. 编写 Dockerfile:

    dockerfile 复制代码
    FROM node:14
    
    WORKDIR /usr/src/app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 3000
    
    CMD ["npm", "start"]
  5. 构建镜像:

    sh 复制代码
    docker build -t myapp .
  6. 运行容器:

    sh 复制代码
    docker run -p 3000:3000 myapp

使用Docker进行持续集成/持续部署(CI/CD)

可以使用Docker结合Jenkins、GitLab CI等工具实现CI/CD流水线。

例如,在GitLab CI中使用Docker构建和部署:

yaml 复制代码
image: docker:latest

services:
  - docker:dind

stages:
  - build
  - deploy

build:
  stage: build
  script:
    - docker build -t myapp .

deploy:
  stage: deploy
  script:
    - docker run -d -p 3000:3000 myapp

总结

通过本文的学习,我们详细介绍了Docker的基础知识、环境安装、基本命令、以及进阶操作。希望这些内容能帮助你更好地理解和使用Docker,提高开发和部署效率。Docker作为一个强大的工具,在现代软件开发中扮演着越来越重要的角色,掌握它将极大提升你的技术能力。

Docker官方文档:Docker Documentation

相关推荐
冰帝海岸3 小时前
01-spring security认证笔记
java·笔记·spring
小二·4 小时前
java基础面试题笔记(基础篇)
java·笔记·python
wuxingge7 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
wusong9997 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
猫爪笔记7 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
Resurgence037 小时前
【计组笔记】习题
笔记
pq113_68 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio
志凌海纳SmartX8 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总8 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿8 小时前
k8s 集群安装
云原生·容器·kubernetes