Docker基础入门
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的核心概念和基本操作,是学习容器化运维的第一步。