← 返回首页
🐳

Docker基础入门

📂 devops ⏱ 2 min 263 words

Docker基础入门

什么是Docker

Docker是一个开源的容器化平台,允许开发者将应用程序及其依赖打包成轻量级、可移植的容器。

核心概念

概念 说明
镜像(Image) 只读模板,包含运行应用所需的一切
容器(Container) 镜像的运行实例
仓库(Registry) 存储镜像的仓库
Dockerfile 构建镜像的脚本

安装Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# CentOS/RHEL
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动Docker
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version
docker run hello-world

基本命令

镜像操作

# 拉取镜像
docker pull nginx:latest

# 列出本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

# 搜索镜像
docker search ubuntu

# 查看镜像详情
docker inspect nginx

容器操作

# 运行容器
docker run -d --name mynginx -p 80:80 nginx

# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop mynginx

# 启动容器
docker start mynginx

# 删除容器
docker rm mynginx

# 进入容器
docker exec -it mynginx /bin/bash

# 查看日志
docker logs mynginx
docker logs -f mynginx

Dockerfile基础

# 基础镜像
FROM ubuntu:20.04

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 安装依赖
RUN apt-get update && apt-get install -y \
    nginx \
    curl \
    && rm -rf /var/lib/apt/lists/*

# 复制配置文件
COPY nginx.conf /etc/nginx/nginx.conf

# 复制应用代码
COPY ./html /usr/share/nginx/html

# 暴露端口
EXPOSE 80

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

常用指令

指令 说明
FROM 基础镜像
RUN 执行命令
COPY 复制文件
ADD 复制文件(支持URL和压缩包)
ENV 设置环境变量
EXPOSE 声明端口
CMD 容器启动命令
ENTRYPOINT 入口点
WORKDIR 工作目录
USER 指定用户

构建镜像

# 构建镜像
docker build -t myapp:v1 .

# 指定Dockerfile
docker build -f Dockerfile.prod -t myapp:v1 .

# 不使用缓存
docker build --no-cache -t myapp:v1 .

实践:部署Web应用

# 1. 创建Dockerfile
cat > Dockerfile << 'EOF'
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
EOF

# 2. 构建镜像
docker build -t mywebapp:v1 .

# 3. 运行容器
docker run -d --name webapp -p 3000:3000 mywebapp:v1

# 4. 查看日志
docker logs -f webapp

总结

Docker是现代应用部署的基础技术。掌握Docker的核心概念和基本操作,是学习容器化运维的第一步。