Docker的使用
Docker 安装使用
1. Docker 安装步骤:
-
Linux(以Ubuntu为例):
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
Windows 和 MacOS:
- 直接从Docker官网下载安装Docker Desktop。
-
验证安装:
docker --version
2. Docker 基本命令:
-
启动/停止 Docker 服务:
sudo systemctl start docker sudo systemctl stop docker
-
查看 Docker 镜像:
docker images
-
运行一个容器:
docker run -it ubuntu /bin/bash
-
查看正在运行的容器:
docker ps
-
停止一个容器:
docker stop <container_id>
-
删除一个容器:
docker rm <container_id>
-
删除一个镜像:
docker rmi <image_id>
自定义别名(alias)
在 Linux 中,你可以通过 自定义别名(alias) 的方式将较长的命令简化为你想要的短命令,比如将 docker ps
变成 dps
,或将 docker images
变成 dis
。这些自定义指令可以通过编辑用户的 shell 配置文件 来实现,比如 ~/.bashrc
(如果使用 Bash)或 ~/.zshrc
(如果使用 Zsh)。
步骤:如何自定义 Linux 命令别名
1. 创建临时别名
如果你只需要临时创建一个别名,可以直接在命令行中使用以下格式:
alias dps='docker ps'
alias dis='docker images'
这个别名只在当前终端会话中有效。一旦你关闭终端或注销,别名就会失效。
2. 创建永久别名
要让别名在每次登录时都有效,可以将别名保存到你的 shell 配置文件 中。常见的 shell 配置文件有:
- 如果你使用 Bash,编辑
~/.bashrc
文件。 - 如果你使用 Zsh,编辑
~/.zshrc
文件。
步骤:
-
打开 shell 配置文件:
-
对于 Bash:
nano ~/.bashrc
-
对于 Zsh:
nano ~/.zshrc
-
-
在文件末尾添加别名定义。例如:
alias dps='docker ps' alias dis='docker images'
-
保存并退出编辑器(在
nano
中按Ctrl + O
保存,Ctrl + X
退出)。 -
更新配置文件,使新添加的别名生效:
-
对于 Bash:
source ~/.bashrc
-
对于 Zsh:
source ~/.zshrc
-
3. 测试别名
现在你可以在终端中直接输入 dps
或 dis
来执行相应的 Docker 命令:
dps # 等同于 'docker ps'
dis # 等同于 'docker images'
注意事项
-
别名与已有命令冲突:确保你定义的别名不会与已有的系统命令冲突。比如
dps
是一个较短的命令,可能已经被其他应用使用,定义之前可以用以下命令检查它是否已被占用:which dps
-
移除别名:如果你想删除某个别名,只需要在配置文件中找到对应的
alias
行并删除,然后重新加载配置文件(source ~/.bashrc
或source ~/.zshrc
)。 -
复杂别名:如果你的命令较为复杂,可以使用带参数的别名。注意带参数的命令使用时需要用单引号来封装整个命令,且参数要正确引用。
通过这种方式,你可以方便地为常用的长命令创建短命令,从而提高工作效率。
Docker Compose 使用总结
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。你可以使用一个 YAML 文件来定义应用程序的服务,然后用一个命令创建并启动所有服务。
1. 安装 Docker Compose:
Docker Desktop 内置了 docker-compose
,如果单独使用 Docker,安装步骤如下:
-
Linux:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
-
验证安装:
docker-compose --version
2. 使用 Docker Compose 启动服务:
-
docker-compose.yml 示例:
version: '3' services: web: image: nginx ports: - "8080:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: example
-
启动服务:
docker-compose up
-
后台运行:
docker-compose up -d
-
停止服务:
docker-compose down
Docker Compose 优势:
- 简化多容器应用的管理。
- 容易定义依赖关系,如数据库、缓存等。
- 通过一个配置文件管理服务、网络、卷等。
Dockerfile 使用总结
Dockerfile 是用于构建 Docker 镜像的脚本文件,它包含了镜像的基础设置、环境配置和软件安装步骤。
1. Dockerfile 基本结构:
- 示例:
# 选择基础镜像 FROM node:18 # 设置工作目录 WORKDIR /app # 复制当前目录下的文件到容器中 COPY . . # 安装依赖 RUN npm install # 暴露端口 EXPOSE 3000 # 启动命令 CMD ["npm", "start"]
2. 构建 Docker 镜像:
docker build -t my-node-app .
3. 运行镜像:
docker run -p 3000:3000 my-node-app
Dockerfile 优势:
- 每次构建都保证相同的环境。
- 可重用,团队成员可以通过相同的
Dockerfile
快速创建一致的开发或生产环境。 - 支持缓存,加快构建速度。
Docker Compose 和 Dockerfile 对比
-
Dockerfile:专注于构建单个服务的镜像,定义了如何构建一个容器的步骤。常用于项目的开发、测试或生产环境的标准化构建。
-
Docker Compose:用于管理多个容器,特别是在微服务架构中。通过
docker-compose.yml
文件,简化了多个容器的启动、停止和管理。可以指定容器间的依赖关系。
应用场景对比:
- Dockerfile:通常用来构建单个应用的基础镜像,适用于持续集成和持续部署的场景。
- Docker Compose:适用于需要运行多个相互依赖的服务,比如前后端分离的应用、数据库、缓存等,适合在开发或本地测试时使用。
Docker Compose
Docker Compose 配置文件(docker-compose.yml
)使用 YAML 格式来定义多容器应用。通过它可以描述应用中的各个服务、网络、卷等。以下是 Docker Compose 配置文件中的主要语法和关键字段。
基本结构
version: '3' # 定义Compose文件的版本
services: # 定义服务
web: # 服务名称
image: nginx # 使用的镜像
ports: # 映射端口
- "8080:80" # 宿主机端口:容器内部端口
volumes: # 挂载卷
- ./data:/var/www/html # 宿主机路径:容器路径
environment: # 定义环境变量
- NGINX_HOST=localhost
- NGINX_PORT=80
db: # 另一个服务
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
volumes: # 定义数据卷
db_data:
version
版本
version
字段指定 Compose 文件的版本,不同版本支持的语法有所不同。推荐使用较新的version: '3'
或以上版本。
services
服务
services
字段用来定义应用的各个服务(容器),每个服务可以独立配置。
-
image
:指定要使用的 Docker 镜像,可以是官方镜像或自定义镜像。例如image: nginx
。 -
build
:用来指定 Dockerfile 路径来构建镜像:build: ./app # 指定目录包含Dockerfile
-
ports
:映射宿主机端口和容器端口。格式为"宿主机端口:容器端口"
:ports: - "8080:80"
-
volumes
:映射宿主机的目录到容器内的目录:volumes: - ./data:/var/www/html
-
environment
:定义环境变量,格式为KEY=VALUE
:environment: - MYSQL_ROOT_PASSWORD=example
-
command
:覆盖容器启动时的默认命令:command: ["npm", "start"]
-
depends_on
:指定服务的依赖关系,确保按顺序启动。depends_on: - db
-
networks
:指定服务的网络配置:networks: - frontend - backend
volumes
卷
volumes
字段用于定义全局的数据卷。数据卷可以在多个服务之间共享,或者用于持久化存储。
volumes:
db_data: # 名字可以自定义
networks
网络
networks
字段用来定义服务间的网络。Compose 默认会为服务创建一个网络,也可以手动定义多个网络。
networks:
frontend:
backend:
完整的示例
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./data:/var/www/html
depends_on:
- db
environment:
- NGINX_HOST=localhost
- NGINX_PORT=80
networks:
- frontend
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
networks:
- backend
volumes:
db_data:
networks:
frontend:
backend:
常用字段解释
-
restart
:指定容器的重启策略(如always
,on-failure
,no
):restart: always
-
extra_hosts
:为容器添加自定义的 hosts 映射:extra_hosts: - "myapp.local:127.0.0.1"
-
healthcheck
:配置容器的健康检查:healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m30s timeout: 10s retries: 3
Docker Compose 常用命令
-
启动服务:
docker-compose up
-
后台启动:
docker-compose up -d
-
停止服务:
docker-compose down
-
查看日志:
docker-compose logs
-
列出服务:
docker-compose ps
通过 Docker Compose,能够快速定义、部署和管理复杂的多容器应用,在开发和测试中非常高效。
原文地址:https://blog.csdn.net/weixin_44719499/article/details/142906380
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!