为了账号安全,请及时绑定邮箱和手机立即绑定

Docker部署实战:新手入门教程

概述

本文详细介绍了Docker部署实战,从基础概念到环境搭建,再到镜像操作和容器管理,帮助新手快速入门。通过Docker-compose工具的应用,进一步展示了如何定义和运行多容器应用。文中还通过一个简单的Web应用案例,详解了从项目结构到启动应用的全过程。

Docker基础概念介绍

什么是Docker

Docker是一种容器化技术,它提供了一种轻量级、可移植、自包含的软件打包和分发方式。Docker可以将应用及其依赖项封装在一个称为“容器”的独立环境中,从而实现应用在不同环境中的可移植性。容器是基于镜像创建的,镜像定义了容器的运行环境和依赖项。

Docker的工作原理

Docker利用了Linux内核中的cgroups和namespace技术来实现容器的隔离和资源限制。以下是Docker工作原理的简要概述:

  1. 镜像:镜像是一个只读模板,包含了应用运行环境的所有依赖项。镜像是构建容器的基础。
  2. 容器:容器是镜像的运行实例,可以启动、停止和删除。每个容器都有自己的文件系统、进程空间、用户空间和网络空间。
  3. 仓库:仓库用于存储和分发镜像。Docker Hub是Docker的公共仓库,用户可以从中拉取镜像。
  4. Docker引擎:Docker引擎是一个客户端-服务器架构的系统,它包括一个Docker守护进程和一个Docker客户端。守护进程负责管理镜像和容器,而客户端则通过命令行接口与守护进程通信。

Docker与虚拟机的区别

特性 虚拟机 Docker
启动时间 较慢(分钟级别) 较快(秒级别)
性能 较低,因为需要完整的操作系统 较高,因为直接运行在主机操作系统上
资源消耗 高,包括操作系统和依赖项 低,只包含应用和依赖项
启动速度 慢,需要启动整个操作系统 快,直接启动应用环境
系统要求 需要完整的操作系统镜像 只需少量的内核功能和Docker引擎
隔离机制 通过硬件虚拟化 通过内核命名空间和cgroups
Docker环境搭建

安装Docker

Docker的安装过程因操作系统而异。以下是Windows、Linux和MacOS系统的安装步骤:

Windows安装Docker

  1. 下载安装程序:
    https://hub.docker.com/editions/community/windows-server
  2. 运行安装程序,跟随向导完成安装。

Linux安装Docker

以下是Ubuntu系统的安装步骤:

  1. 更新系统包列表:
    sudo apt-get update
  2. 安装必要的依赖包:
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  3. 添加Docker官方GPG密钥:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. 添加Docker APT仓库:
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  5. 安装Docker CE(社区版):
    sudo apt-get update
    sudo apt-get install docker-ce

MacOS安装Docker

在MacOS上,可以通过Homebrew安装Docker:

brew install --cask docker

Docker基本命令

Docker提供了丰富的命令行工具来管理镜像、容器和其他资源。以下是一些常用命令:

  1. 查看Docker版本信息
    docker version
  2. 列出所有镜像
    docker images
  3. 从Docker Hub下载镜像
    docker pull ubuntu
  4. 运行容器
    docker run -it ubuntu bash

    其中,-it参数表示交互式终端,ubuntu是镜像名称,bash是容器的入口命令。

  5. 列出正在运行的容器
    docker ps
  6. 列出所有容器(包括停止的容器)
    docker ps -a
  7. 停止容器
    docker stop <container_id>
  8. 删除容器
    docker rm <container_id>
  9. 删除镜像
    docker rmi <image_id>

验证Docker安装是否成功

安装完成后,可以通过以下步骤验证Docker是否安装成功:

  1. 运行Docker版本命令:

    docker version

    如果安装成功,将显示Docker的版本信息。

  2. 检查Docker守护进程是否正在运行:

    sudo systemctl status docker

    或者在Windows中,从Docker安装程序的开始菜单中启动Docker。

  3. 运行一个简单的Docker容器:
    docker run hello-world

    如果Docker版本已安装,此命令将下载一个测试镜像并启动一个容器,输出一些文本信息。

Docker镜像操作

下载镜像

要从Docker Hub下载镜像,可以使用docker pull命令。例如,要下载Ubuntu镜像,可以执行:

docker pull ubuntu

列出本地镜像

要列出本地的镜像,使用docker images命令:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              2b9ca8c5b83c        2 weeks ago         71.2MB

删除镜像

要删除本地镜像,可以使用docker rmi命令。例如,要删除名为ubuntu的镜像,可以执行:

docker rmi ubuntu
Docker容器管理

创建并启动容器

要创建并启动一个新的容器,可以使用docker run命令。例如,要启动一个基于Ubuntu镜像的容器并进入其bash终端,可以执行:

docker run -it ubuntu bash

如果要将容器暴露在主机上的某个端口,可以使用-p参数。例如,启动一个运行nginx的容器,并将容器的80端口映射到主机的8080端口:

docker run -p 8080:80 -d nginx

其中,-d参数表示后台运行容器。

进入正在运行的容器

要进入正在运行的容器,可以使用docker exec命令。例如,如果容器的ID为c9f735d93f3b,可以执行:

docker exec -it c9f735d93f3b bash

停止和删除容器

要停止一个正在运行的容器,可以使用docker stop命令。例如,如果容器的ID为c9f735d93f3b,可以执行:

docker stop c9f735d93f3b

要删除一个容器,可以使用docker rm命令。例如,如果容器的ID为c9f735d93f3b,可以执行:

docker rm c9f735d93f3b
Docker-compose入门

什么是Docker-compose

Docker-compose是一个用于定义和运行多容器Docker应用的工具。通过Docker-compose,可以使用一个简单的YAML文件来配置应用的所有服务。Docker-compose通过docker-compose.yml文件定义应用的配置,并使用docker-compose命令来管理应用的生命周期。

编写Docker-compose文件

docker-compose.yml文件定义了应用的服务、网络和卷等配置。以下是一个简单的docker-compose.yml示例,它定义了一个简单的Web应用,前端使用Nginx,后端使用一个简单的Python应用:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  backend:
    build: ./backend
    ports:
      - "8000:8000"
    volumes:
      - ./backend:/app

使用Docker-compose启动应用

要启动Docker-compose定义的应用,需要先安装Docker-compose。以下是安装步骤:

  1. 下载并安装Docker-compose:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
  2. 验证安装:

    docker-compose --version

启动应用:

docker-compose up

要查看应用状态,可以使用:

docker-compose ps

停止应用:

docker-compose down
Docker部署实战案例

选择一个简单的应用进行部署

选择一个简单的Web应用,例如,使用Flask的Python应用。以下是应用的简单架构:

  • 前端使用Nginx作为反向代理。
  • 后端使用Flask应用提供HTTP服务。

部署步骤详解

第一步:编写项目结构

项目结构如下:

myapp/
├── backend/
│   ├── app.py
│   ├── requirements.txt
├── docker-compose.yml
├── nginx.conf

第二步:编写Dockerfile

backend目录下创建Dockerfile,定义后端应用的构建和运行环境:

# 使用官方的Python运行时作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制所有文件到工作目录
COPY . .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 暴露应用端口
EXPOSE 5000

# 定义启动命令
CMD ["python", "app.py"]

第三步:编写requirements.txt

backend目录下创建requirements.txt,定义应用的依赖项:

Flask==1.1.2

第四步:编写app.py

backend目录下创建app.py,定义Flask应用的启动逻辑:

from flask import Flask
import os

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

第五步:编写docker-compose.yml

在项目根目录下创建docker-compose.yml文件,定义应用的服务、网络和卷等配置:

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - backend
  backend:
    build: backend
    ports:
      - "5000:5000"
    environment:
      - FLASK_ENV=production
    depends_on:
      - web

第六步:编写nginx.conf

创建nginx.conf,定义Nginx的配置:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  768;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout  120;
    types_hash_max_size 2048;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen 80;
        server_name localhost;

        location / {
            proxy_pass http://backend:5000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

第七步:启动应用

在项目根目录下运行以下命令启动应用:

docker-compose up

启动后,可以通过以下命令访问应用:

curl http://localhost

要查看应用的日志,可以使用:

docker-compose logs

要停止应用,可以使用:

docker-compose down

通过以上步骤,你已经成功地使用Docker和Docker-compose部署了一个简单的Web应用。通过这种方式,你可以更方便地管理应用的各个组件,并确保它们在不同的环境中都能一致地运行。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消