继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Docker入门指南:打造你的第一个容器化应用

qq_花开花谢_0
关注TA
已关注
手记 219
粉丝 8
获赞 34
概述

Docker是一个开源的应用容器引擎,利用Linux的namespaces和cgroups等特性来实现进程隔离,简化了应用程序的部署、开发和运行过程。本文将详细介绍Docker的优势、架构、安装配置、基本命令以及如何使用Dockerfile编写镜像,并提供了一个简单的Web应用部署示例。

Docker简介

什么是Docker

Docker是一个开源的应用容器引擎,基于Go语言实现,并利用Linux的namespaces和cgroups等特性来实现进程的隔离。Docker的目标是简化应用程序的部署、开发和运行过程。通过Docker,开发者能够将应用及其依赖打包到一个可移植的容器中,然后发布到任何主流的Linux机器或Windows和macOS机器上,而不会遇到“这个软件在我们的机器上跑不了”的问题。Docker允许开发者在本地开发环境中创建和测试可移植的应用,然后在任何其他环境中部署这种应用,包括私有云、公共云和虚拟化环境。

Docker的优势

  1. 轻量级:Docker容器在运行时只占用运行时所必需的资源,与传统的虚拟机相比,占用的资源更少。
  2. 快速启动:Docker容器可以在秒级启动,几乎做到了与本地程序一样优秀的响应时间。
  3. 可移植性:Docker在各个主流平台上拥有相同的接口,这使得应用程序的移植变得非常容易。
  4. 隔离性:Docker容器能够将应用代码与应用运行的环境完全隔离,这种隔离性保证了应用的可移植性。
  5. 易于管理:Docker提供了完整的软件包,包括应用代码、运行时、库、环境变量和配置文件。

Docker的架构

Docker的架构主要包括三个核心组件:Docker客户端、Docker守护进程和Docker镜像。

  1. Docker客户端:Docker客户端是与Docker守护进程交互的主要组件,通过Docker命令可以与客户端交互。
  2. Docker守护进程:Docker守护进程是一个后台进程,负责接收API请求,并与Docker的其它组件进行交互,如容器、镜像等。
  3. Docker镜像:镜像是一个只读模板,包含了运行应用程序所需的所有内容,如代码、运行时、库、环境变量和配置文件。镜像可以用于生成新的容器。
Docker安装和配置

Docker的下载与安装

  1. 访问Docker的官方网站,选择适合你操作系统的安装包进行下载。
  2. 对于Linux系统,大部分Linux发行版都支持通过包管理器进行安装,例如:

    # 对于Debian/Ubuntu系统
    sudo apt-get update
    sudo apt-get install docker.io
    
    # 对于CentOS系统
    sudo yum install -y docker
  3. 安装完成后,启动Docker服务:

    sudo systemctl start docker
  4. 启动完成后,可以通过以下命令验证Docker是否已经安装成功:

    docker --version

Docker环境配置

安装完成后,可以进行一些基本的环境配置,例如设置Docker的运行用户、配置Docker守护进程的配置文件等。

  1. 设置运行用户:

    sudo usermod -aG docker $USER
  2. 修改Docker守护进程的配置文件/etc/docker/daemon.json,例如添加一个代理设置:

    {
     "proxies": {
       "default": {
         "httpProxy": "http://127.0.0.1:8118",
         "httpsProxy": "http://127.0.0.1:8118"
       }
     }
    }
  3. 重启Docker服务以应用新的配置:

    sudo systemctl restart docker
Docker基本命令

Docker镜像和容器的概念

  • 镜像:镜像是一个只读模板,包含了运行应用程序所需的所有内容,如代码、运行时、库、环境变量和配置文件。
  • 容器:容器是镜像的运行实例。一个镜像可以产生多个容器,容器在运行时可以被修改,但这些修改不会被保存到镜像中。

基本命令的使用:拉取、创建、启动容器

  1. 拉取一个镜像:

    docker pull nginx
  2. 创建一个容器:

    docker run -d --name mynginx -p 8080:80 nginx
  3. 启动一个容器:

    docker start mynginx

查看和删除容器和镜像

  1. 查看所有容器:

    docker ps -a
  2. 删除一个容器:

    docker rm mynginx
  3. 查看所有镜像:

    docker images
  4. 删除一个镜像:

    docker rmi nginx:latest
Dockerfile编写入门

Dockerfile的作用

Dockerfile是一个包含用于构建Docker镜像的指令列表的文本文件,它定义了镜像构建的上下文、基础镜像、环境变量、命令、文件操作等。

编写Dockerfile的基本语法

  1. 基础镜像:指定基础镜像的名称。

    FROM ubuntu:latest
  2. 环境变量:设置环境变量。

    ENV MYVAR=myvalue
  3. 命令:执行命令。

    RUN apt-get update && apt-get install -y python3
  4. 文件操作:拷贝或添加文件到镜像中。

    COPY ./app /app
  5. 工作目录:设置工作目录。

    WORKDIR /app
  6. 入口点和命令:设置容器启动时执行的命令。

    ENTRYPOINT ["python"]
    CMD ["app.py"]

构建自己的Docker镜像

  1. 创建一个Dockerfile文件:

    FROM python:3.8-slim
    WORKDIR /app
    COPY . /app
    RUN pip install --no-cache-dir -r requirements.txt
    CMD ["python", "app.py"]
  2. 构建镜像:

    docker build -t myapp .
  3. 运行容器:

    docker run -d --name myapp -p 5000:5000 myapp
Docker网络和存储

Docker容器的网络配置

Docker容器默认使用桥接网络,可以使用-p选项将容器端口映射到主机端口上,例如:

docker run -d --name myapp -p 5000:5000 myapp

也可以使用自定义网络:

docker network create mynet
docker run -d --name myapp --network mynet -p 5000:5000 myapp

Docker容器的存储配置

Docker容器默认使用临时存储,数据会随着容器的删除而丢失。可以将容器的存储挂载到本地目录:

docker run -d --name myapp -p 5000:5000 -v /path/to/host:/path/in/container myapp

或者使用数据卷:

docker volume create mydata
docker run -d --name myapp -p 5000:5000 -v mydata:/path/in/container myapp
Docker实践:创建简单的Web应用

使用Docker部署一个简单的Web应用

  1. 创建一个简单的Web应用,例如一个Flask应用:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
       return 'Hello, Docker!'
    
    if __name__ == '__main__':
       app.run(host='0.0.0.0')
  2. 创建一个Dockerfile文件:

    FROM python:3.8-slim
    WORKDIR /app
    COPY . /app
    RUN pip install --no-cache-dir -r requirements.txt
    CMD ["python", "app.py"]
  3. 构建并运行Docker镜像:

    docker build -t mywebapp .
    docker run -d --name mywebapp -p 5000:5000 mywebapp

部署后的应用访问和调试

  1. 访问应用:

    打开浏览器,访问http://localhost:5000

  2. 调试应用:

    进入容器查看应用日志:

    docker logs mywebapp

    修改应用代码并重新构建和运行容器:

    docker stop mywebapp
    docker rm mywebapp
    docker build -t mywebapp .
    docker run -d --name mywebapp -p 5000:5000 mywebapp

通过上述步骤,你已经成功地使用Docker部署了一个简单的Web应用,并了解了如何访问和调试应用。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP