Docker使用说明
基于Ubuntu20之后的系统使用Docker的操作说明。
如果是其他操作系统,如debian,请自行修改密钥地址和软件源。
Docker 的安装
更新 Ubuntu ,确保你的 Ubuntu 系统软件包是最新的。
sudo apt-get update sudo apt-get upgrade
安装必要的依赖, Docker 需要一些额外的工具和库。
sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release
添加 Docker 的 GPG 密钥,确保你安装的软件包来源是可信的。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 的官方 APT 源。
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker 引擎和 Docker CLI。
sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io
验证 Docker 安装。
sudo docker run hello-world
这会拉取并运行一个简单的 Docker 容器。如果一切正常,你会看到一条成功消息。
配置 Docker 权限
为了避免每次使用 Docker 都需要 sudo,你可以将自己添加到 docker 用户组。sudo usermod -aG docker $USER
注意:这会让你无需 sudo 即可运行 Docker 命令,但请注意这种设置可能具有安全风险。建议在生产环境中谨慎处理。
docker-compose的安装
要在 Ubuntu 上安装 Docker Compose,您需要确保已安装 Docker,然后可以下载 Docker Compose 的可执行文件并将其添加到系统的可执行路径中。以下是安装 Docker Compose 的步骤:
安装 Docker
确保已在 Ubuntu 上安装 Docker。如果尚未安装,请先安装 Docker。请参照我之前提供的指南。
下载 Docker Compose 的二进制文件
使用
curl
或wget
从官方 GitHub 存储库下载 Docker Compose 的最新版本。你可以查看 Docker Compose 发布页面 获取最新版本的版本号。# 确保 Docker Compose 的版本号最新 DOCKER_COMPOSE_VERSION="2.24.0" # 这是一个示例,请根据官方版本更新 # 下载 Docker Compose 二进制文件 # 注意这里的CPU架构 我选的x86_64 请根据自己的架构进行选择 sudo curl -L "https://github.com/docker/compose/releases/download/v$DOCKER_COMPOSE_VERSION/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
添加执行权限
将下载的 Docker Compose 文件设为可执行状态。sudo chmod +x /usr/local/bin/docker-compose
检查 Docker Compose 是否成功安装
验证 Docker Compose 是否已正确安装。docker-compose --version
如果安装成功,你应该会看到 Docker Compose 的版本信息。
使用 Docker Compose
安装完成后,你可以开始使用 Docker Compose。创建 docker-compose.yml 文件并在其中定义服务,然后使用 docker-compose up 启动服务。
注意事项
1. 在下载 Docker Compose 二进制文件时,确保从官方可信渠道下载。
2. 如果你需要 Docker Compose 的旧版本,可以在官方 GitHub 页面上找到以前的版本。
3. 请根据自己的机器系统和CPU架构选择正确的版本。
Docker 基本使用
简单命令
# 搜索镜像 docker search <image> # 拉取镜像 docker pull <image>:<tag> # 列出本地的 Docker 镜像 docker images # 列出容器 docker ps # 启动容器 docker start <container> # 停止容器 docker stop <container> # 删除指定镜像 使用 -f 参数可以强制删除 docker rmi <image_name> # 删除指定容器 需要先停止容器 docker rm <container>
启动容器
docker run -itd --restart always -p <host_port>:<container_port> <image> <cmd>
- -d:以后台模式运行容器(即“守护进程”模式)。
- -it:启动交互式容器并分配一个伪终端,通常用于调试和开发。
- –name
:指定容器的名称。 - -p
: :映射主机和容器的端口。 - -v
: :挂载主机上的文件夹到容器中。 - –rm:容器停止后自动删除。
- –env
= :设置环境变量。 - –network
:指定容器运行的网络。 - –restart 重启策略:
- no:默认值。容器不会自动重启。
- always:无论容器因何原因停止,它都会自动重启。这对于需要确保容器长期运行的服务非常有用。
- unless-stopped:类似于 always,但如果容器是由用户手动停止的,它不会重新启动。适用于需要持久化服务但允许用户手动停止的场景。
- on-failure:当容器因为非零退出码停止时,它会重新启动。适用于容器可能因错误而停止的场景。可以通过添加一个整数参数来指定尝试重启的最大次数,比如 on-failure:3 表示容器最多尝试重启 3 次。
查看日志
docker logs <container>
- -f:跟踪实时日志输出。
- –tail
:显示最后的 n 行日志。
Docker exec
docker exec 命令用于在正在运行的容器内执行命令。
docker exec -it <container> <cmd>
- -it:以交互方式运行命令,通常用于连接容器的终端。
- –user
:以指定用户的身份运行命令。
创建自定义网络
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o macvlan_mode=bridge -o parent=enp0s31f6 mynet
- docker network create:
这是创建 Docker 网络的命令。 - -d macvlan:
指定网络驱动为 macvlan。macvlan 驱动允许容器拥有独立的 MAC 地址,使其看起来像是主机上的一个独立网络接口。在这种模式下,容器可以直接与外部网络进行通信。 - –subnet=192.168.2.0/24:
定义网络的子网范围。这表示所有 IP 地址在 192.168.2.0/24 的范围内,子网掩码为 255.255.255.0。这意味着此网络中可用的 IP 地址从 192.168.2.1 到 192.168.2.254。 - –gateway=192.168.2.1:
指定该网络的网关地址。在这个例子中,网关地址是 192.168.2.1。通常,网关用于将网络内的流量路由到外部网络。 - -o macvlan_mode=bridge:
macvlan 驱动支持几种不同的模式。bridge 模式是最常用的一种,允许容器与外部网络通信,并通过网关与其他网络通信。这与传统的桥接模式不同,macvlan bridge 模式直接连接到物理网络。 - -o parent=enp0s31f6:
指定 macvlan 网络的父接口。这里的 enp0s31f6 是主机上的物理网络接口。macvlan 网络将在该接口上创建虚拟网络,使容器能够通过这个接口与外部网络通信。 - mynet:
这是创建的网络名称。在使用 Docker 时,你可以使用这个名称来引用新创建的网络。
除了macvlan外,还有bridge、overlay等类型。
- bridge
- 概述:这是 Docker 的默认网络类型。每个容器都有一个独立的虚拟网络接口,并通过一个虚拟交换机连接到 bridge 网络。容器间可以通过内部 IP 地址进行通信。
- 使用场景:适用于希望在单个主机上的容器之间进行通信,同时保持与外部网络的隔离。可以通过端口映射将外部请求路由到容器。
- overlay
- 概述:用于 Docker Swarm 或 Kubernetes 等分布式环境。在多个 Docker 主机之间创建虚拟网络,允许容器跨主机通信。使用 VXLAN 等技术实现。
- 使用场景:适用于分布式应用程序,需要容器在多个 Docker 主机间通信。常用于多容器应用程序和微服务架构。
- docker network create:
构建镜像
# 在当前目录中构建 Docker 镜像,标签为 "my_image:latest" docker build -t my_image:latest . # 使用特定 Dockerfile 构建,标签为 "my_image:v1" docker build -f /path/to/Dockerfile -t my_image:v1 . # 构建时不使用缓存 docker build --no-cache -t my_image:no_cache . # 构建时传递环境变量 docker build --build-arg MY_VAR=value -t my_image:with_arg .
- -t:指定构建镜像的标签和名称。
- -f:指定 Dockerfile 的路径。默认为当前目录下的 Dockerfile。
- –no-cache:构建时不使用缓存。这对于确保每次都从头开始构建很有用。
- –build-arg:传递构建时的参数(如环境变量)。
- –target:指定构建的阶段(用于多阶段构建)。
- –network:指定构建期间使用的网络模式。
推送镜像到dockerhub
docker push my_dockerhub_username/my_image:latest
docker-compose
# 启动 docker-compose up # 停止 docker-compose down # 查看所有容器的日志 docker-compose logs # 列出所有相关容器 docker-compose ps
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1430797759@qq.com