Docker学习

Docker学习
青夢Docker 安装
Linux安装
一键安装命令
1
sudo curl -fsSL https://get.docker.com| bash -s docker --mirror Aliyun
启动docker
1
sudo service docker start
配置Pull镜像
镜像站
项目名称 项目地址 加速地址 1Panel https://github.com/1Panel-dev/1Panel/
https://docker.1panel.live
Daocloud https://github.com/DaoCloud/public-image-mirror
https://docker.m.daocloud.io
耗子面板 https://github.com/TheTNB/panel
https://hub.rat.dev
Linux配置镜像站
1
sudo vi /etc/docker/daemon.json
1
2
3
4
5
6
7{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}1
wq! # 保存退出
1
sudo service docker restart # 重启docker
Docker相关笔记
Docker与传统虚拟机的区别
Docker的端口映射
Docker挂载卷
Docker技术原理
Docker是利用Linux内核中的两大原生功能实现容器化
使用docker exec -it [容器]
后,使用cat /etc/os-release
查看容器的linux发行版,然后更新包索引就可以在容器内安装软件了
制作Dockerfile
就是将启动程序的一系列操作和步骤的命令转换成Dockerfile的形式
略
Docker网络
Docker Compose
使用yml文件管理多个容器,里面列出了容器之间是如何创建以及如何协同工作。可以简单的把docker compose文件理解成一个或者多个的Docker run命令,按照特定的格式列到了一个文件里面。
docker compose是一个轻量级的容器编排技术,他适合个人使用、单机运行,对于企业级服务器集群,大规模的容器编排需求,则是需要另外的软件Kubernetes
1 | docker命令示例 |
1 | # docker compose示例 |
Docker 命令大全
一、服务管理命令
命令 | 说明 | 应用场景 | 备注 |
---|---|---|---|
systemctl start docker |
启动 Docker 服务 | 在安装好 Docker 后,首次使用或服务停止后需要启动时使用该命令。 | – |
systemctl stop docker |
停止 Docker 服务 | 当需要对 Docker 进行维护、更新或临时停止使用时,可执行此命令。 | – |
systemctl restart docker |
重启 Docker 服务 | 常用于使新的配置生效,比如修改了 Docker 的配置文件后,需要重启服务。 | – |
systemctl status docker |
查看 Docker 服务状态 | 可以了解 Docker 服务是否正在运行,以及运行状态的详细信息,如启动时间、进程 ID 等。 | – |
systemctl enable docker |
设置 Docker 开机自启 | 确保每次系统启动时,Docker 服务都能自动运行,方便后续使用。 | – |
systemctl disable docker |
取消 Docker 开机自启 | 如果不想让 Docker 在开机时自动启动,可使用此命令。 | – |
docker info |
查看 Docker 系统信息 | 包括镜像和容器的数量、存储驱动、运行时等详细信息。有助于了解当前 Docker 环境的整体情况。 | – |
docker --help |
查看帮助文档 | 当对某个 Docker 命令的用法不确定时,可通过此命令获取详细的帮助信息。 | – |
docker version |
查看版本信息 | 包括客户端和服务端的版本号。在排查一些与版本相关的问题时非常有用。 | – |
二、镜像管理命令
命令 | 说明 | 应用场景 | 备注 |
---|---|---|---|
docker images |
列出本地所有镜像 | 展示镜像的仓库名称、标签、镜像 ID、创建时间和大小等信息,方便管理和查看本地镜像资源。 | – |
docker search [镜像名称] |
在 Docker Hub 上搜索镜像 | 可根据搜索结果选择合适的镜像进行拉取和使用,例如docker search nginx 。 |
– |
docker pull [镜像名称[:标签]] |
拉取镜像 | 若不指定标签,默认拉取最新版本(latest),如docker pull ubuntu:20.04 。docker pull --platform=xxx nginx ,表示拉取特定cpu建构的镜像 |
– |
docker rmi [镜像名称或ID] |
删除镜像 | 注意,若镜像正在被容器使用,则无法删除,需先停止并删除相关容器。可同时删除多个镜像,如docker rmi ubuntu:20.04 nginx:latest 。 |
rmi : remove image |
docker build -t [目标镜像:标签] [Dockerfile路径] |
构建镜像 | 根据指定路径下的 Dockerfile 构建镜像。-t 参数用于指定目标镜像的名称和标签,构建过程会根据 Dockerfile 中的指令逐步创建镜像。 |
t : tag |
docker tag [源镜像:标签] [目标镜像:标签] |
添加镜像标签 | 可用于给镜像打上新的版本号或别名,方便区分和管理不同版本的镜像,例如docker tag ubuntu:20.04 ubuntu:latest 。 |
– |
docker push [镜像名称:标签] |
推送镜像到仓库 | 将本地镜像推送到 Docker Hub 或其他远程镜像仓库。需先登录到对应的仓库,如docker push myusername/nginx:latest 。 |
– |
docker history [镜像名称或ID] |
查看镜像构建历史 | 展示每一层镜像的创建信息,包括创建时间、执行的命令等,有助于了解镜像的构建过程和内容。 | – |
docker inspect [镜像名称或ID] |
查看镜像详细信息(JSON) | 包含镜像的配置、环境变量、挂载点等各种详细信息,对于排查镜像相关问题非常有帮助。 | – |
docker save -o [文件名.tar] [镜像名称或ID] |
保存镜像为 tar 文件 | 便于在不同环境中传输和使用。例如docker save -o ubuntu_20.04.tar ubuntu:20.04 。 |
o : output |
docker load -i [文件名.tar] |
加载镜像 | 与docker save命令相对应,用于在新环境中恢复镜像。 | i : input |
docker import [路径] [镜像:标签] |
从归档文件创建镜像 | 可将容器的当前状态保存为一个新的镜像,常用于自定义镜像的制作。 | – |
三、容器管理命令
命令 | 说明 | 应用场景 | 备注 |
---|---|---|---|
docker run [选项] [镜像名称[:标签]] [容器启动命令] |
创建并运行容器 | 常见选项包括-d (后台运行)、-p (端口映射)、-v (卷挂载)等,例如docker run -d -p 80:80 nginx ,表示在后台运行一个 nginx 容器,并将宿主机的 80 端口映射到容器的 80 端口。--restart always 只要容器停止了就会立即重启;--restart unless-stopped 和always相似,区别是手动停止的容器不会尝试重启 |
d : detachp : publishv : volume |
docker ps |
查看正在运行的容器 | 显示容器的 ID、名称、使用的镜像、运行状态、端口映射等信息。 | – |
docker ps -a |
查看所有容器(含停止) | 列出所有容器,包括已停止的容器。方便查看所有创建过的容器记录。 | a : all |
docker start [容器名称或ID] |
启动容器 | 例如docker start mynginx ,可将名为 mynginx 的容器启动。 |
– |
docker stop [容器名称或ID] |
停止容器 | 通过向容器发送停止信号,让容器正常停止运行。 | – |
docker restart [容器名称或ID] |
重启容器 | 先停止容器,然后再启动它,常用于使容器内的新配置生效。 | – |
docker rm [容器容器名称或ID |
删除容器 | 若容器正在运行,需先停止后才能删除,也可使用-f 参数强制删除运行中的容器。 |
f : force |
docker kill [容器名称或ID] |
强制终止容器 | 通过发送 SIGKILL 信号立即停止容器,可能导致数据丢失,一般在容器无法正常停止时使用。 | – |
docker exec -it [容器名称或ID] [命令] |
容器中执行命令 | 在一个正在运行的容器内执行命令。例如docker exec -it mynginx bash ,可进入 mynginx 容器的 bash 终端,进行交互式操作。 |
i : interactivet : tty |
docker attach [容器名称或ID] |
连接容器主进程 | 连接到一个正在运行的容器的标准输入、输出和错误输出流。与docker exec不同,docker attach会直接进入容器的主进程,退出时可能会导致容器停止。 | – |
docker diff [容器名称或ID] |
查看容器文件变动 | 显示容器内新增、修改和删除的文件和目录,有助于了解容器运行过程中的文件操作情况。 | – |
docker commit -m "[信息]" -a "[作者]" [容器名称或ID] [镜像] |
从容器生成镜像 | -m 参数用于添加提交信息,-a 参数指定作者信息,例如docker commit -m "updated nginx config" -a "John Doe" mynginx mynewnginx:1.0 。 |
m : messagea : author |
docker pause [容器名称或ID] |
暂停容器进程 | 容器状态变为暂停,但资源仍被占用,可通过docker unpause 恢复。 |
– |
docker unpause [容器名称或ID] |
恢复暂停容器 | 恢复暂停的容器内的所有进程,使容器继续正常运行。 | – |
docker top [容器名称或ID] |
查看容器进程 | 类似于在宿主机上使用top命令查看进程。 | – |
docker stats [容器名称或ID] |
容器资源使用监控 | 实时查看容器的资源使用情况,包括 CPU、内存、网络、磁盘 I/O 等指标。 | – |
docker cp [容器名称或ID]:[路径] [宿主路径] |
复制文件容器→宿主机 | 从容器内复制文件或目录到宿主机。也可反向操作,将宿主机文件复制到容器内,例如docker cp mynginx:/etc/nginx/nginx.conf /tmp/ 。 |
– |
docker cp [宿主路径] [容器名称或ID]:[路径] |
复制文件宿主机→容器 | – | |
docker logs [容器名称或ID] |
查看容器日志 | 可用于排查容器内应用程序的运行问题,例如查看 Web 服务器的访问日志或应用程序的错误日志。 | – |
docker logs -f [容器名称或ID] |
实时查看日志 | 类似于在 Linux 系统中使用tail -f命令查看日志文件,方便实时监控容器的运行状态。 | f : follow下 |
docker logs --tail=N [容器名称或ID] |
查看最后 N 行日志 | 例如docker logs --tail=100 mynginx ,可查看 mynginx 容器日志的最后 100 行。 |
– |
四、网络管理命令
命令 | 说明 | 应用场景 | 备注 |
---|---|---|---|
docker network ls |
列出所有网络 | 展示网络的名称、ID、驱动类型、子网等信息,方便管理和查看当前的网络配置。 | – |
docker network create [网络名] |
创建新的Docker子网络 | 默认创建的是桥接网络,也可通过指定--driver 参数创建其他类型的网络,如docker network create --driver=overlay myoverlaynet 。 |
– |
docker network inspect [网络名称或ID] |
查看网络详细信息(JSON) | 包含网络的配置、连接的容器、子网掩码、网关等详细信息,有助于排查网络相关问题。 | – |
docker network rm [网络名称或ID] |
删除网络 | 注意,若网络中还有容器连接,则无法删除,需先断开容器与网络的连接。 | – |
docker network connect [网络名称或ID] [容器名称或ID] |
将容器加入网络 | 使容器能够与该网络中的其他容器进行通信,例如docker network connect mynet mynginx 。 |
– |
docker network disconnect [网络] [容器] |
将容器移出网络 | 容器将无法再与该网络中的其他容器通信,但仍可通过其他网络进行通信。 | – |
docker run --network=[网络名称或ID] [镜像名称[:标签]] |
指定网络创建容器 | 例如docker run --network=mynet -d nginx ,创建一个使用 mynet 网络的 nginx 容器。 |
– |
五、数据卷管理命令
命令 | 说明 | 应用场景 | 备注 |
---|---|---|---|
docker volume ls |
查看所有数据卷 | 示数据卷的名称、驱动、挂载点等信息,方便管理和查看数据卷资源。 | – |
docker volume create [卷名] |
创建数据卷 | 数据卷用于在容器之间或容器与宿主机之间共享数据,可持久化保存数据。 | – |
docker volume inspect [卷名] |
查看数据卷详细信息(JSON) | 包含数据卷的创建时间、挂载路径、使用的驱动等详细信息。 | – |
docker volume rm [卷名] |
删除数据卷 | 若数据卷正在被容器使用,则无法删除,需先停止并删除相关容器。 | – |
docker run -v [卷名]:[容器路径] [镜像名称[:标签]] |
挂载数据卷到容器 | 在创建容器时挂载数据卷到容器内。例如docker run -v myvolume:/data -d mysql ,将名为 myvolume 的数据卷挂载到 mysql 容器的 /data 目录。 |
v : volume |
docker run -v [宿主路径]:[容器路径] |
宿主目录挂载到容器 | 在创建容器时将宿主机的目录挂载到容器内。实现容器与宿主机之间的数据共享,如docker run -v /hostdata:/containerdata -d ubuntu 。 |
– |
docker run -v [宿主路径]:[容器路径]:ro |
只读挂载宿主目录 | 在创建容器时将宿主机的目录以只读方式挂载到容器内。容器只能读取挂载目录中的数据,无法进行写入操作,例如docker run -v /hostdata:/containerdata:ro -d ubuntu 。 |
– |
六、其他常用命令
命令 | 说明 | 应用场景 | 备注 |
---|---|---|---|
docker system df |
查看 Docker 系统磁盘占用 | 包括镜像、容器、数据卷占用的磁盘空间。有助于了解系统资源的使用情况,及时清理不必要的资源。 | – |
docker system prune |
清理系统中未使用资源 | 包括未使用的镜像、容器、网络和数据卷。释放磁盘空间,优化系统性能。 | – |
docker builder prune |
清理构建缓存 | 在构建镜像过程中,会产生一些缓存文件,使用此命令可清理这些缓存,减少磁盘占用。 | – |
docker swarm init |
初始化 Swarm 集群 | 将当前节点作为管理节点。用于搭建分布式容器编排环境,实现容器的集群化管理。 | – |
docker swarm join --token [令牌] [管理节点地址] |
加入 Swarm 集群 | 将当前节点加入到指定的 Docker Swarm 集群中。需要从管理节点获取加入令牌,实现集群的扩展。 | – |
docker stack deploy -c [docker-compose.yml文件路径] [堆栈名] |
使用 Compose 部署堆栈 | 使用 docker-compose.yml 文件部署一个堆栈到 Docker Swarm 集群。方便在集群环境中部署和管理多个相关的容器服务。 |
c : compose-file |
docker-compose up |
启动所有服务 | 在当前目录下根据 docker-compose.yml 文件启动并运行所有服务容器。常用于本地开发和测试环境中,一键启动多个相关的容器服务。对于非标准的文件名test.yaml 可以使用-f 启动 |
f : file |
docker-compose down |
停止并删除服务 | 停止并删除由 docker-compose.yml 文件定义的所有服务容器、网络和数据卷。用于清理环境,停止相关服务的运行。 |
– |
docker-compose build |
构建服务镜像 | 根据 docker-compose.yml 文件构建镜像。如果镜像已经存在,会根据文件中的定义更新镜像。 |
– |
docker-compose ps |
查看服务容器状态 | 列出由 docker-compose.yml 文件定义的所有服务容器的运行状态,方便查看当前启动的容器情况。 |
– |
docker-compose logs |
查看服务日志 | 查看由 docker-compose.yml 文件定义的所有服务容器的日志输出,方便排查多个容器服务的运行问题。 |
– |
docker-compose restart |
重启服务 | 重启由 docker-compose.yml 文件定义的所有服务容器,使新的配置生效。 |
– |
docker-compose stop |
停止服务 | 停止由 docker-compose.yml 文件定义的所有服务容器,但保留容器的状态和数据。 |
– |
docker-compose start |
启动服务 | 启动之前停止的由 docker-compose.yml 文件定义的所有服务容器。 |
– |
docker secret create [秘密名称] [文件] |
创建 Swarm 秘密 | 在 Docker Swarm 集群中创建一个秘密,用于存储敏感信息,如密码、密钥等。通过文件路径指定要存储的秘密内容。 | – |
docker config create [配置名称] [文件] |
创建 Swarm 配置 | 在 Docker Swarm 集群中创建一个配置,用于存储应用程序的配置文件。通过文件路径指定要存储的配置内容。 | – |
docker service create --name [服务名称] --replicas [数量] [镜像名称[:标签]] |
创建 Swarm 服务 | 在 Docker Swarm 集群中创建一个服务,指定服务名称、副本数量和使用的镜像。例如docker service create --name mynginx --replicas 3 nginx ,创建一个名为 mynginx 的服务,包含 3 个 nginx 容器副本。 |
– |
docker service update --replicas [数量] [服务] |
更新服务副本数 | 更新 Docker Swarm 集群中服务的副本数量。例如docker service update --replicas 5 mynginx ,将 mynginx 服务的副本数量更新为 5 个。 |
– |
docker service rm [服务] |
删除服务 | 删除 Docker Swarm 集群中的指定服务,停止并删除服务的所有容器副本。 | – |
docker service scale [服务]=[数量] |
调整服务副本数量 | 调整 Docker Swarm 集群中服务的副本数量,与docker service update --replicas 命令功能类似。例如docker service scale mynginx = 4 ,将 mynginx 服务的副本数量调整为 4 个。 |
– |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果