Bootstrap

Docker 常用命令详解

目录

  1. Docker 简介
  2. 安装 Docker
  3. Docker 基本命令
  4. Docker 高级命令
  5. 实战案例
  6. 总结

Docker 简介

Docker 是一个开源的容器化平台,提供了简化应用程序开发、部署和运行的工具。Docker 容器是一种轻量级、可移植、自给自足的软件包,包含了应用程序及其所有依赖项。通过使用 Docker,开发人员可以确保应用程序在不同环境中具有一致的行为。

安装 Docker

在不同操作系统上安装 Docker 的方法略有不同。以下是一些常见操作系统上的安装步骤:

Windows

  1. 下载 Docker Desktop for Windows
  2. 双击安装包并按照提示进行安装。
  3. 安装完成后,启动 Docker Desktop。

macOS

  1. 下载 Docker Desktop for Mac
  2. 双击安装包并按照提示进行安装。
  3. 安装完成后,启动 Docker Desktop。

Linux

在 Ubuntu 上安装 Docker 的步骤如下:

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce
sudo systemctl status docker

Docker 基本命令

镜像命令

拉取镜像

从 Docker Hub 拉取镜像:

docker pull <image_name>:<tag>

例如,拉取最新版本的 Ubuntu 镜像:

docker pull ubuntu:latest
列出镜像

列出本地存储的所有镜像:

docker images
删除镜像

删除指定镜像:

docker rmi <image_id>

强制删除镜像:

docker rmi -f <image_id>
构建镜像

从 Dockerfile 构建镜像:

docker build -t <image_name>:<tag> <path_to_dockerfile>

例如,从当前目录下的 Dockerfile 构建镜像:

docker build -t myapp:latest .

容器命令

创建并运行容器

创建并运行容器:

docker run -d --name <container_name> <image_name>:<tag>

例如,运行一个 Ubuntu 容器:

docker run -d --name myubuntu ubuntu:latest
列出容器

列出所有正在运行的容器:

docker ps

列出所有容器(包括已停止的容器):

docker ps -a
停止容器

停止指定容器:

docker stop <container_id>
启动容器

启动指定容器:

docker start <container_id>
删除容器

删除指定容器:

docker rm <container_id>
进入容器

通过 exec 命令进入正在运行的容器:

docker exec -it <container_id> /bin/bash

网络命令

创建网络

创建自定义网络:

docker network create <network_name>
列出网络

列出所有网络:

docker network ls
删除网络

删除指定网络:

docker network rm <network_id>
将容器连接到网络

将指定容器连接到网络:

docker network connect <network_name> <container_id>
从网络断开容器

将指定容器从网络断开:

docker network disconnect <network_name> <container_id>

Docker 高级命令

数据卷

创建数据卷

创建数据卷:

docker volume create <volume_name>
列出数据卷

列出所有数据卷:

docker volume ls
挂载数据卷

将数据卷挂载到容器:

docker run -d --name <container_name> -v <volume_name>:<container_path> <image_name>:<tag>

例如,将数据卷挂载到 Ubuntu 容器的 /data 目录:

docker run -d --name myubuntu -v mydata:/data ubuntu:latest

Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose.yml 文件,可以方便地管理多个容器及其依赖关系。

安装 Docker Compose

可以使用以下命令安装 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
docker-compose --version
Docker Compose 基本命令
  • 启动服务:

    docker-compose up
    
  • 停止服务:

    docker-compose down
    
  • 查看服务日志:

    docker-compose logs
    
  • 重启服务:

    docker-compose restart
    

实战案例

部署一个简单的 Web 应用

下面是一个使用 Docker 部署简单的 Python Flask Web 应用的示例。

创建项目目录结构
myflaskapp/
├── app.py
├── Dockerfile
└── requirements.txt
编写 app.py
from flask import Flask

app = Flask(__name__)

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

if __name__ == '__main__':
    app.run(host='0.0.0.0')
编写 requirements.txt
flask
编写 Dockerfile
# 使用官方 Python 镜像作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到工作目录
COPY . /app

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

# 暴露容器的 5000 端口
EXPOSE 5000

# 运行应用程序
CMD ["python", "app.py"]
构建并运行 Docker 容器
  1. 构建镜像:

    docker build -t myflaskapp:latest .
    
  2. 运行容器:

    docker run -d -p 5000:5000 myflaskapp:latest
    
  3. 在浏览器中访问 http://localhost:5000,应该看到 “Hello, World!”。

使用 Docker Compose 管理多容器应用

下面是一个使用 Docker Compose 管理多容器应用的示例,该应用包括一个 Flask Web 应用和一个 Redis 数据库。

创建项目目录结构
mycomposeapp/
├── app.py
├── Dockerfile
├── requirements.txt
└── docker-compose.yml
编写 app.py
from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return f"Hello, World! This page has been viewed {redis.get('hits').decode('utf-8')} times."

if __name__ == '__main__':
    app.run(host='0.0.0.0')
编写 requirements.txt
flask
redis
编写 Dockerfile
# 使用官方 Python 镜

像作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到工作目录
COPY . /app

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

# 暴露容器的 5000 端口
EXPOSE 5000

# 运行应用程序
CMD ["python", "app.py"]
编写 docker-compose.yml
version: '3'

services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
使用 Docker Compose 启动应用
  1. 启动应用:

    docker-compose up -d
    
  2. 在浏览器中访问 http://localhost:5000,应该看到 “Hello, World! This page has been viewed X times.”,其中 X 表示页面的访问次数。

总结

本文详细介绍了 Docker 的常用命令,包括镜像、容器和网络的基本命令,以及数据卷和 Docker Compose 等高级命令。通过实战案例展示了如何使用 Docker 部署和管理应用程序。希望本文能帮助读者全面掌握 Docker 的基本操作和高级用法,提高在容器化技术方面的技能。如果你有任何疑问或需要进一步的帮助,欢迎随时联系我。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;