docker 入门

# Docker

## 基本概念

Docker 是一个工具,可以将应用程序及其依赖环境打包成一个独立的、可移植的“容器”,让应用程序在任何地方都能快速、一致地运行。

- 镜像(Image): Docker 镜像是一个只读的模板,用来创建容器,简单来说就是为容器运行提供需要的程序、资源、配置等, 他在构建成功后就不会变化,只用于启动容器
- 容器(Container): 容器是镜像的运行实例,可以被启动、停止、删除 ,一个Docker镜像可以例化出来多个容器,每个容器之间是独立的。Docker的容器是用来运行程序的,可以理解为Docker的容器就是一个操作系统,目的是运行我们写的程序。
- 仓库(Repository): 用来存储和分发 Docker 镜像的地方 Dockerhub 有点类似于github用户可以在上面托管镜像

## **Docker 常用命令**

### **1. 镜像操作**

#### **1.1 拉取镜像**

从 Docker Hub 拉取镜像:

```bash
docker pull <镜像名称>:<标签>
```

示例:

```bash
docker pull nginx:latest
```

#### **1.2 查看本地镜像**

列出本地所有镜像:

```bash
docker images
```

#### **1.3 删除镜像**

删除本地镜像:

```bash
docker rmi <镜像ID或名称>
```

示例:

```bash
docker rmi nginx:latest
```

#### **1.4 构建镜像**

通过 Dockerfile 构建镜像:

```bash
docker build -t <镜像名称>:<标签> .
```

示例:

```bash
docker build -t my-app:1.0 .
```

---

### **2. 容器操作**

#### **2.1 运行容器**

基于镜像运行容器:

```bash
docker run -d -p <端口号> --name <容器名称> <镜像名称>
```

示例:

```bash
docker run -d -p 3000:80 --name my-nginx nginx:latest
```

#### **2.2 查看容器**

查看运行中的容器:

```bash
docker ps
```

查看所有容器(包括已停止的):

```bash
docker ps -a
```

#### **2.3 停止容器**

停止运行中的容器:

```bash
docker stop <容器ID或名称>
```

示例:

```bash
docker stop my-nginx
```

#### **2.4 启动已停止的容器**

启动已停止的容器:

```bash
docker start <容器ID或名称>
```

示例:

```bash
docker start my-nginx
```

#### **2.5 删除容器**

删除已停止的容器:

```bash
docker rm <容器ID或名称>
```

示例:

```bash
docker rm my-nginx
```

#### **2.6 进入容器**

进入运行中的容器:

```bash
docker exec -it <容器ID或名称> /bin/bash
```

示例:

```bash
docker exec -it my-nginx /bin/bash
```

#### **2.7 查看容器日志**

查看容器日志:

```bash
docker logs <容器ID或名称>
```

实时查看日志:

```bash
docker logs -f <容器ID或名称>
```

---

### **3. 网络操作**

#### **3.1 查看网络**

列出所有网络:

```bash
docker network ls
```

#### **3.2 创建网络**

创建自定义网络:

```bash
docker network create <网络名称>
```

示例:

```bash
docker network create my-network
```

#### **3.3 连接容器到网络**

运行容器并连接到指定网络:

```bash
docker run -d -p <端口号> --name <容器名称> --network <网络名称> <镜像名称>
```

示例:

```bash
docker run -d -p 3000:80 --name my-nginx --network my-network nginx:latest
```

---

### **4. 数据卷操作**

#### **4.1 创建数据卷**

创建数据卷:

```bash
docker volume create <卷名称>
```

示例:

```bash
docker volume create my-volume
```

#### **4.2 查看数据卷**

列出所有数据卷:

```bash
docker volume ls
```

#### **4.3 挂载数据卷**

运行容器并挂载数据卷:

```bash
docker run -d --name <容器名称> -v <卷名称>:<容器内路径> <镜像名称>
```

示例:

```bash
docker run -d --name my-nginx -v my-volume:/app nginx:latest
```

---

### **5. Docker Compose 操作**

#### **5.1 启动服务**

使用 `docker-compose.yml` 启动服务:

```bash
docker-compose up -d
```

#### **5.2 停止服务**

停止并删除服务:

```bash
docker-compose down
```

#### **5.3 查看服务状态**

查看运行中的服务:

```bash
docker-compose ps
```

---

### **6. 其他常用命令**

#### **6.1 查看 Docker 版本**

```bash
docker --version
```

#### **6.2 清理未使用的资源**

删除未使用的镜像、容器、网络和数据卷:

```bash
docker system prune
```

#### **6.3 查看容器资源使用情况**

查看容器的 CPU、内存等资源使用情况:

```bash
docker stats
```

---

### **7. 示例**

#### **7.1 打包并运行一个 Node.js 应用**

1. 编写 Dockerfile:

```dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
```

2. 构建镜像:

```bash
docker build -t my-node-app .
```

3. 运行容器:

```bash
docker run -d -p 3000:3000 my-node-app
```

#### **7.2 使用 Docker Compose 部署多容器应用**

1. 编写 `docker-compose.yml`:

```yaml
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
```

2. 启动服务:

```bash
docker-compose up -d
```
posted @ 2025-04-25 15:14  程序員劝退师  阅读(28)  评论(0)    收藏  举报