Docker 命令详解

devtools/2024/11/15 0:56:15/

Docker 命令详解

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

一、Docker 简介

Docker 包含三个核心组件:

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

Docker 的优点

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

二、安装 Docker

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

三、Docker 基础命令

查看版本信息

docker --version

搜索镜像

docker search <image_name>

下载镜像

docker pull <image_name>

列出本地镜像

docker images

删除镜像

docker rmi <image_id>

启动容器

docker run <image_name> [command]

查看运行中的容器

docker ps

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

docker ps -a

停止容器

docker stop <container_id>

删除容器

docker rm <container_id>

进入容器

docker exec -it <container_id> /bin/bash

查看容器日志

docker logs <container_id>

查看容器详细信息

docker inspect <container_id>

四、进阶命令

构建镜像

docker build -t <image_name> .

打包镜像

docker save -o <filename>.tar <image_name>

加载镜像

docker load -i <filename>.tar

镜像标签

docker tag <source_image> <repository>:<tag>

查看系统信息

docker system info

管理网络

创建网络
docker network create <network_name>
连接网络
docker network connect <network_name> <container_id>
删除网络
docker network rm <network_name>

管理卷

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

五、更多命令

清理资源

docker system prune

显示磁盘使用情况

docker system df

重启容器

docker restart <container_id>

立即停止容器

docker kill <container_id>

重命名容器

docker rename <container_id> <new_name>

显示容器内的进程

docker top <container_id>

显示容器映射的端口

docker port <container_id> <port>

显示容器文件系统的更改

docker diff <container_id>

容器状态提交为新镜像

docker commit <container_id> <new_image_name>

容器中执行命令

docker exec <container_id> <command>

检查容器的健康状态

docker container inspect --format '{{.State.Health.Status}}' <container_id>

设置容器的健康检查

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

创建容器时指定网络模式

docker run --net=<network_mode> <image_name>

使用环境变量

docker run -e KEY=VALUE <image_name>

使用自定义的 Dockerfile 构建镜像

docker build -t <image_name> -f <Dockerfile_path> .

设置容器的资源限制

docker run --memory=256M --cpu-period=100000 --cpu-quota=50000 <image_name>

设置容器的网络接口

docker run --ip=<ip_address> --net=host <image_name>

挂载宿主机目录到容器

docker run -v <host_dir>:<container_dir> <image_name>

挂载匿名卷到容器

docker run -v <container_dir> <image_name>

挂载只读卷到容器

docker run -v <host_dir>:<container_dir>:ro <image_name>

设置容器的启动命令

docker run --entrypoint <command> <image_name>

设置容器的默认命令

docker run --entrypoint <command> <image_name> <args>

设置容器的默认工作目录

docker run -w <working_dir> <image_name>

容器复制文件到宿主机

docker cp <container_id>:<src_path> <dest_path>

从宿主机复制文件到容器

docker cp <src_path> <container_id>:<dest_path>

设置容器的 DNS 服务器

docker run --dns=<dns_ip> <image_name>

设置容器的域名

docker run --domainname=<domain_name> <image_name>

设置容器的 hostname

docker run --hostname <hostname> <image_name>

设置容器的 IP 地址

docker run --ip <ip_address> <image_name>

设置容器的 MAC 地址

docker run --mac-address <mac_address> <image_name>

设置容器的端口映射

docker run -p <host_port>:<container_port> <image_name>

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

docker run -P <image_name>

设置容器的标签

docker run --label <key>=<value> <image_name>

设置容器的超时时间

docker run --stop-timeout <timeout_seconds> <image_name>

设置容器的环境变量文件

docker run --env-file <env_file_path> <image_name>

设置容器的用户

docker run -u <user> <image_name>

设置容器的 UID 和 GID

docker run -u <uid>:<gid> <image_name>

设置容器的 SELinux 标签

docker run --security-opt label=<selinux_label> <image_name>

设置容器的 cgroups

docker run --cgroup-parent=<cgroup_parent> <image_name>

设置容器的 cgroups 规则

docker run --cgroupns=<mode> <image_name>

设置容器的 OOM 杀死动作

docker run --oom-kill-disable <image_name>

设置容器的 OOM 分配率

docker run --oom-score-adj=<score_adj> <image_name>

设置容器的内存交换限制

docker run --memory-swap <image_name>

设置容器的内存交换比例

docker run --memory-swappiness <image_name>

设置容器的 CPU 份额

docker run --cpu-shares <image_name>

设置容器的 CPU 亲和性

docker run --cpuset-cpus <image_name>

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

docker run --cpuset-mems <image_name>

设置容器的 CPU 实时周期

docker run --cpu-period <image_name>

设置容器的 CPU 实时配额

docker run --cpu-quota <image_name>

设置容器的 CPU 实时权重

docker run --cpu-rt-period <image_name>

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

docker run --cpu-rt-runtime <image_name>

设置容器的 CPU 实时权重

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

六、示例

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

  1. 下载 Ubuntu 镜像:

    docker pull ubuntu:latest
    
  2. 启动容器并进入 shell:

    docker run -it ubuntu:latest /bin/bash
    

七、总结

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


http://www.ppmy.cn/devtools/96377.html

相关文章

《学会 SpringBoot · 优雅停机方案》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

肿瘤细胞表皮生长因子EGFR靶向肽;GE11;YHWYGYTPQNVI

【GE11简介】 GE11肽是从噬菌体展示肽库中筛选出来的一种有效的EGFR配体&#xff0c;它是一种十二肽&#xff0c;可以高亲和力和选择性地与EGFR特异性结合。GE11已广泛用于EGFR阳性肿瘤的放射治疗、基因治疗和化疗药物的诊断和靶向递送。 【中文名称】肿瘤细胞表皮生长因子肽…

C:每日一练:单身狗(2.0版本)

前言&#xff1a; 今天在刷题的时候突然看到一道题&#xff0c;疑似一位故题。仔细一看&#xff0c;欸&#xff01;这不是就是单身狗的升级版吗&#xff1f;我想那必须再安排一篇&#xff0c;不过由于本篇文章与上一篇单身狗文章所涉及的知识点基本相同&#xff0c;所以还请大…

【SpringBoot】SpringBoot框架的整体环境搭建和使用(整合Mybatis,Druid,Junit4,PageHelper,logback等)

目录 1.介绍 1.1 配置文件 1.2 目录结构 2.基于SpringBoot的SpringMVC 4.整合Mybatis 5.整合Druid连接池 6.整合Junit4 7.整合Logback 8.整合PageHelper 9.SpringBoot整合Thymeleaf ​编辑 【附录】springboot的pom.xml 1.介绍 Spring框架的优点是方便解耦、简化开…

Spring IoCDI(中)--IoC的进步

通过上文的讲解和学习, 我们已经知道了Spring IoC 和DI的基本操作, 接下来我们来系统的学习Spring IoC和DI 的操作. 前⾯我们提到IoC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对 象&#xff0c;也就是bean的存储。 1. Bean的…

【python小脚本】摄像头rtsp流转hls m3u8 格式web端播放

写在前面 工作需要&#xff0c;简单整理实际上这种方式延迟太高了&#xff0c;后来前端直接接的海康的本地解码插件&#xff0c;走的 websockt博文内容为 摄像头 rtsp 实时流转 hls m3u8 的一个 Python 脚本理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚…

如果从mysql导出百万数据级的excel

如果从mysql导出百万数据级的excel&#xff0c;可能遇到的问题&#xff1f; 同步导数据&#xff0c;接口很容易超时。 如果把所有数据一次性装载到内存&#xff0c;很容易引起OOM。 数据量太大sql语句慢。 如果走异步&#xff0c;如何通知用户导出结果 如果excel文件太大&#…

XSS--DOM破坏案例与靶场

靶场连接https://xss.pwnfunction.com/challenges/ 目录 Ma SPaghet! Jeff Ugandan Knuckles Ricardo Milos Ah Thats Hawt Ligma Mafia Ok,Boomer Ma SPaghet! <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHT…