Docker 是一种容器化技术,它允许你在一个独立的环境中打包和运行应用程序及其依赖项。每个容器都是独立的,轻量级,且具备可移植性,这使得开发、测试和部署变得更加简单和一致。
Docker 是一种强大的容器化技术,它简化了应用程序的开发、测试和部署过程。通过理解 Docker 的核心概念和基本用法,你可以更好地利用它来提高你的开发和部署效率。
特点:
常用命令:
docker pull
命令。docker pull nginx
docker images
或 docker image ls
命令来查看本地已下载的镜像列表。docker images ls
docker search
命令来搜索 Docker Hub 上的镜像。docker search centos
docker rmi
命令,指定要删除的镜像名称或标签。# 删除一个镜像 docker rmi <镜像名称或ID>
docker rmi my-image
# 删除所有镜像
docker rmi $(docker images -aq)
docker build
命令。# 如果指定构建文件
docer build -f <文件路径和文件名> -t my-custom-image .
# 不指定构建文件,则寻找当前路径的Dockerfile文件
docker build -t my-custom-image .
docker push
命令。# docker push <镜像名称>
docker push username/my-custom-image
docker history
命令可以查看镜像的构建历史,包括每个层叠的详细信息。docker history <镜像名称>
Docker容器是Docker镜像运行的实例,它们提供了一个独立的运行环境,包括文件系统、进程空间和网络。容器是可执行的、轻量级的,可以在不同环境中运行相同的应用程序。
特点:
常用命令:
docker run
命令来启动容器。# -d 后台运行
# --name 给这个容器起个名字
# -p 80:8080 端口映射,容器的8080端口映射到主机的80
# -P 给主机随机分配端口
docker run -d --name my-container ubuntu
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
docker stop
命令来停止一个运行中的容器。docker stop my-container
docker start
命令来启动一个已停止的容器。docker start my-container
docker restart
命令来重启一个正在运行的容器。docker restart my-container
docker rm
命令。# 删除容器
docker rm my-container
# 强制删除容器
docker rm -f my-container
# 删除所有容器
docker rm $(docker ps -aq)
docker logs
命令可以查看容器的日志输出。docker logs my-container
# 进入交互
docker exec -it my-container /bash/shell
# 进入容器
docker attach my-container
Dockerfile是一个文本文件,它包含了一系列指令,用于构建Docker镜像。通过编写Dockerfile,你可以定义镜像的构造过程,包括镜像的基础操作系统、应用程序代码、依赖项安装等。Dockerfile是自动化构建和标准化镜像的关键组成部分。
FROM
: 指定基础镜像,用作构建的起点。FORM ubuntu:20.04
MAINTAINER
(已不建议使用,推荐使用 LABEL
): 设置维护者信息。MAINTAINER yourname@example.com
LABEL
: 设置镜像的元数据,如作者、描述、版本等。LABEL maintainer="yourname@example.com" \
description="My custom image" \
version="1.0"
RUN
: 在镜像中执行命令,通常用于安装软件包、配置环境等。RUN apt-get update && apt-get install -y python
COPY
: 复制文件或目录到镜像中。COPY app.py /app/
ADD
: 类似于 COPY
,但可以处理 URL 和解压缩文件。ADD http://example.com/myapp.tar.gz /app/
WORKDIR
: 设置工作目录,后续命令将在该目录中执行。WORKDIR /app
EXPOSE
: 声明容器运行时监听的端口。EXPOSE 80
CMD
: 定义容器启动时要执行的默认命令,只有一个 CMD 命令可以存在。CMD ["python", "app.py"]
ENTRYPOINT
: 类似于 CMD
,但允许用户在运行容器时覆盖命令。ENTRYPOINT ["python", "app.py"]
ENV
: 设置环境变量。ENV MY_VAR="my value"
USER
: 设置容器中运行命令的用户名或 UID。USER appuser
VOLUME
: 声明一个持久化数据卷。VOLUME /data
ARG
: 定义构建时的参数,可以用于在构建时动态设置一些值。ARG MY_ARG=default_value
示例:node项目
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index"]
EXPOSE 3000
Docker 网络模型包括以下几个关键组件:
命令:
docker network create
** 命令可以创建自定义网络。docker network create my-network
docker network ls
命令可以列出所有可用的 Docker 网络。docker network ls
docker network inspect
命令可以查看特定网络的详细信息。docker network inspect my-network
--network
** 参数可以将容器连接到指定的网络。docker run -d --network my-network my-container
docker network disconnect
命令可以断开容器与网络的连接。docker network disconnect my-network my-container
docker network connect
命令将其连接到现有网络。docker network connect my-network my-container