您的位置:首页 > 新闻 > 资讯 > docker详细笔记

docker详细笔记

2024/12/21 23:10:44 来源:https://blog.csdn.net/heyongjin22/article/details/140890656  浏览:    关键词: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. 通过命令行验证
    docker --version
    

在macOS上安装Docker

  1. 下载并访问Docker Desktop for Mac
  2. 安装并运行Docker Desktop
  3. 通过命令行验证
    docker --version
    

在Linux上安装Docker

以Ubuntu为例:

  1. 更新APT包索引
    sudo apt-get update
    
  2. 安装依赖包
    sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
    
  3. 添加Docker官方GPG密钥
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  4. 设置稳定版仓库
    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引擎
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  6. 通过命令行验证
    docker --version
    

Docker基本命令

镜像命令

  1. 拉取镜像
    docker pull <image_name>
    
  2. 列出本地镜像
    docker images
    
  3. 删除镜像
    docker rmi <image_id>
    

容器命令

  1. 创建并运行容器
    docker run -it <image_name>
    
  2. 列出运行中的容器
    docker ps
    
  3. 停止容器
    docker stop <container_id>
    
  4. 删除容器
    docker rm <container_id>
    

Docker进阶操作

Dockerfile详解

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

示例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)

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

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

docker run -it -v /host/path:/container/path <image_name>

网络配置

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

创建自定义网络:

docker network create <network_name>

将容器加入自定义网络:

docker run -it --network <network_name> <image_name>

Docker实践应用

使用Docker构建Web应用

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

  1. 创建项目文件结构:
    myapp/
    ├── Dockerfile
    ├── package.json
    └── server.js
    
  2. 编写 package.json
    {"name": "myapp","version": "1.0.0","main": "server.js","dependencies": {"express": "^4.17.1"},"scripts": {"start": "node server.js"}
    }
    
  3. 编写 server.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:
    FROM node:14WORKDIR /usr/src/appCOPY package.json .RUN npm installCOPY . .EXPOSE 3000CMD ["npm", "start"]
    
  5. 构建镜像:
    docker build -t myapp .
    
  6. 运行容器:
    docker run -p 3000:3000 myapp
    

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

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

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

image: docker:latestservices:- docker:dindstages:- build- deploybuild:stage: buildscript:- docker build -t myapp .deploy:stage: deployscript:- docker run -d -p 3000:3000 myapp

总结

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

Docker官方文档:Docker Documentation

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com