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 的深入了解,你还可以探索更多的高级功能和技术。

相关推荐
m0_741768855 小时前
使用docker的小例子
运维·docker·容器
最新小梦8 小时前
Docker日志管理
运维·docker·容器
ZHOU西口9 小时前
微服务实战系列之玩转Docker(十五)
nginx·docker·微服务·云原生·swarm·docker swarm·dockerui
lgbisha10 小时前
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
低代码·docker·华为云
记得开心一点嘛10 小时前
在Linux系统上使用Docker部署javaweb项目
linux·运维·docker
Persistence is gold12 小时前
cassandra指定配置文件的docker启动方法
运维·docker·容器
C语言扫地僧13 小时前
Docker 镜像制作(Dockerfile)
linux·服务器·docker·容器
ken_coding17 小时前
Windows11 WSL2的ubuntu 22.04中拉取镜像报错
linux·ubuntu·docker
Richardlygo17 小时前
(k8s)Kubernetes部署Promehteus
云原生·容器·kubernetes
炸裂狸花猫18 小时前
Kubernetes从零到精通(12-Ingress、Gateway API)
容器·kubernetes·gateway