Docker 命令详解

Docker 命令详解

Docker 是一种流行的容器化技术,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现快速部署和一致性的运行环境。本文档将详细介绍 Docker 的基础知识,并通过一系列实用的命令来帮助你更好地管理 Docker 环境。

一、Docker 简介

Docker 包含三个核心组件:

  • Docker 客户端 - 用户与 Docker 交互的界面。
  • Docker 守护进程 - 运行在主机上,处理客户端发送的指令。
  • Docker 镜像 - 包含了运行应用程序所需的所有文件和依赖。

Docker 的优点

  • 一致性:无论在哪个环境中运行,应用的行为都是一致的。
  • 资源高效:容器共享主机的操作系统内核,占用资源较少。
  • 隔离性:每个容器都有自己的文件系统和运行空间,相互之间不会干扰。

二、安装 Docker

确保你的系统已经安装了 Docker。如果还没有安装,可以访问 Docker 官方网站 获取安装指南。

三、Docker 基础命令

查看版本信息

bash 复制代码
docker --version

搜索镜像

bash 复制代码
docker search <image_name>

下载镜像

bash 复制代码
docker pull <image_name>

列出本地镜像

bash 复制代码
docker images

删除镜像

bash 复制代码
docker rmi <image_id>

启动容器

bash 复制代码
docker run <image_name> [command]

查看运行中的容器

bash 复制代码
docker ps

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

bash 复制代码
docker ps -a

停止容器

bash 复制代码
docker stop <container_id>

删除容器

bash 复制代码
docker rm <container_id>

进入容器

bash 复制代码
docker exec -it <container_id> /bin/bash

查看容器日志

bash 复制代码
docker logs <container_id>

查看容器详细信息

bash 复制代码
docker inspect <container_id>

四、进阶命令

构建镜像

bash 复制代码
docker build -t <image_name> .

打包镜像

bash 复制代码
docker save -o <filename>.tar <image_name>

加载镜像

bash 复制代码
docker load -i <filename>.tar

镜像标签

bash 复制代码
docker tag <source_image> <repository>:<tag>

查看系统信息

bash 复制代码
docker system info

管理网络

创建网络
bash 复制代码
docker network create <network_name>
连接网络
bash 复制代码
docker network connect <network_name> <container_id>
删除网络
bash 复制代码
docker network rm <network_name>

管理卷

创建卷
bash 复制代码
docker volume create <volume_name>
列出所有卷
bash 复制代码
docker volume ls
显示卷的详细信息
bash 复制代码
docker volume inspect <volume_name>
删除卷
bash 复制代码
docker volume rm <volume_name>

五、更多命令

清理资源

bash 复制代码
docker system prune

显示磁盘使用情况

bash 复制代码
docker system df

重启容器

bash 复制代码
docker restart <container_id>

立即停止容器

bash 复制代码
docker kill <container_id>

重命名容器

bash 复制代码
docker rename <container_id> <new_name>

显示容器内的进程

bash 复制代码
docker top <container_id>

显示容器映射的端口

bash 复制代码
docker port <container_id> <port>

显示容器文件系统的更改

bash 复制代码
docker diff <container_id>

将容器状态提交为新镜像

bash 复制代码
docker commit <container_id> <new_image_name>

在容器中执行命令

bash 复制代码
docker exec <container_id> <command>

检查容器的健康状态

bash 复制代码
docker container inspect --format '{{.State.Health.Status}}' <container_id>

设置容器的健康检查

bash 复制代码
docker run -d --health-cmd="curl -f http://localhost/ || exit 1" --health-interval=30s --health-timeout=30s --health-retries=3 <image_name>

创建容器时指定网络模式

bash 复制代码
docker run --net=<network_mode> <image_name>

使用环境变量

bash 复制代码
docker run -e KEY=VALUE <image_name>

使用自定义的 Dockerfile 构建镜像

bash 复制代码
docker build -t <image_name> -f <Dockerfile_path> .

设置容器的资源限制

bash 复制代码
docker run --memory=256M --cpu-period=100000 --cpu-quota=50000 <image_name>

设置容器的网络接口

bash 复制代码
docker run --ip=<ip_address> --net=host <image_name>

挂载宿主机目录到容器

bash 复制代码
docker run -v <host_dir>:<container_dir> <image_name>

挂载匿名卷到容器

bash 复制代码
docker run -v <container_dir> <image_name>

挂载只读卷到容器

bash 复制代码
docker run -v <host_dir>:<container_dir>:ro <image_name>

设置容器的启动命令

bash 复制代码
docker run --entrypoint <command> <image_name>

设置容器的默认命令

bash 复制代码
docker run --entrypoint <command> <image_name> <args>

设置容器的默认工作目录

bash 复制代码
docker run -w <working_dir> <image_name>

从容器复制文件到宿主机

bash 复制代码
docker cp <container_id>:<src_path> <dest_path>

从宿主机复制文件到容器

bash 复制代码
docker cp <src_path> <container_id>:<dest_path>

设置容器的 DNS 服务器

bash 复制代码
docker run --dns=<dns_ip> <image_name>

设置容器的域名

bash 复制代码
docker run --domainname=<domain_name> <image_name>

设置容器的 hostname

bash 复制代码
docker run --hostname <hostname> <image_name>

设置容器的 IP 地址

bash 复制代码
docker run --ip <ip_address> <image_name>

设置容器的 MAC 地址

bash 复制代码
docker run --mac-address <mac_address> <image_name>

设置容器的端口映射

bash 复制代码
docker run -p <host_port>:<container_port> <image_name>

设置容器的端口映射(发布所有端口)

bash 复制代码
docker run -P <image_name>

设置容器的标签

bash 复制代码
docker run --label <key>=<value> <image_name>

设置容器的超时时间

bash 复制代码
docker run --stop-timeout <timeout_seconds> <image_name>

设置容器的环境变量文件

bash 复制代码
docker run --env-file <env_file_path> <image_name>

设置容器的用户

bash 复制代码
docker run -u <user> <image_name>

设置容器的 UID 和 GID

bash 复制代码
docker run -u <uid>:<gid> <image_name>

设置容器的 SELinux 标签

bash 复制代码
docker run --security-opt label=<selinux_label> <image_name>

设置容器的 cgroups

bash 复制代码
docker run --cgroup-parent=<cgroup_parent> <image_name>

设置容器的 cgroups 规则

bash 复制代码
docker run --cgroupns=<mode> <image_name>

设置容器的 OOM 杀死动作

bash 复制代码
docker run --oom-kill-disable <image_name>

设置容器的 OOM 分配率

bash 复制代码
docker run --oom-score-adj=<score_adj> <image_name>

设置容器的内存交换限制

bash 复制代码
docker run --memory-swap <image_name>

设置容器的内存交换比例

bash 复制代码
docker run --memory-swappiness <image_name>

设置容器的 CPU 份额

bash 复制代码
docker run --cpu-shares <image_name>

设置容器的 CPU 亲和性

bash 复制代码
docker run --cpuset-cpus <image_name>

设置容器的 CPU 亲和性(线程)

bash 复制代码
docker run --cpuset-mems <image_name>

设置容器的 CPU 实时周期

bash 复制代码
docker run --cpu-period <image_name>

设置容器的 CPU 实时配额

bash 复制代码
docker run --cpu-quota <image_name>

设置容器的 CPU 实时权重

bash 复制代码
docker run --cpu-rt-period <image_name>

设置容器的 CPU 实时运行时间

bash 复制代码
docker run --cpu-rt-runtime <image_name>

设置容器的 CPU 实时权重

bash 复制代码
docker run --cpu-rt-weight <image_name>
bash 复制代码
docker run --device-read-bps <image_name>
bash 复制代码
docker run --device-read-iops <image_name>
bash 复制代码
docker run --device-write-bps <image_name>
bash 复制代码
docker run --device-write-iops <image_name>
bash 复制代码
docker run --blkio-weight <image_name>
bash 复制代码
docker run --kernel-memory <image_name>
bash 复制代码
docker run --kernel-memory-tcm <image_name>
bash 复制代码
docker run --oom-score-adj <image_name>
bash 复制代码
docker run --init <image_name>
bash 复制代码
docker run --detach-keys <image_name>
bash 复制代码
docker run --disable-content-trust <image_name>
bash 复制代码
docker run --interactive <image_name>
bash 复制代码
docker run --isolation <image_name>
bash 复制代码
docker run --log-driver <image_name>
bash 复制代码
docker run --log-opt <image_name>
bash 复制代码
docker run --name <container_name> <image_name>
bash 复制代码
docker run --pid <image_name>
bash 复制代码
docker run --read-only <image_name>
bash 复制代码
docker run --rm <image_name>
bash 复制代码
docker run --sig-proxy <image_name>
bash 复制代码
docker run --storage-opt <image_name>
bash 复制代码
docker run --sysctl <image_name>
bash 复制代码
docker run --tmpfs <image_name>
bash 复制代码
docker run --ulimit <image_name>
bash 复制代码
docker run --userns <image_name>
bash 复制代码
docker run --uts <image_name>
bash 复制代码
docker run --workdir <image_name>

六、示例

假设我们要从官方仓库下载一个最新的 Ubuntu 镜像,并启动一个容器,然后进入该容器的 shell:

  1. 下载 Ubuntu 镜像:

    bash 复制代码
    docker pull ubuntu:latest
  2. 启动容器并进入 shell:

    bash 复制代码
    docker run -it ubuntu:latest /bin/bash

七、总结

本文介绍了 Docker 的基本概念和常用命令。通过这些命令,你可以开始构建、运行和管理 Docker 容器。随着对 Docker 的深入了解,你还可以探索更多的高级功能和技术。

相关推荐
_Eden_5 小时前
Docker技术相关学习二
学习·spring cloud·docker
_Eden_7 小时前
Docker技术相关学习三
java·学习·docker
大丈夫立于天地间8 小时前
Linux 系统上安装 Docker 并进行配置
linux·运维·docker
赴前尘9 小时前
基于 docker 的mysql 5.7 主备集群搭建
mysql·adb·docker
小旺仔爱代码9 小时前
Docker
spring cloud·docker·容器
yaoxtao18 小时前
Docker的镜像
运维·docker·容器
不一样的信息安全18 小时前
Docker环境下Nacos的保姆级安装教程
运维·docker·容器
小Tomkk18 小时前
Docker 部署 Starrocks 教程
运维·starrocks·docker·容器
zhkmxx93020 小时前
docker pull Error response from daemon问题
运维·docker·容器
a_j5820 小时前
Kubernetes常见问答(一)
云原生·容器·kubernetes