Docker 入门之单机常用命令总结

Docker 入门之单机常用命令总结

缘起

大部分场景,或者说大部分入门使用场景,都是单机环境下使用docker,主要用来隔离环境,节省硬件资源。

所以单机命令也就是最常用的命令了。这篇总结一下单机常用的几组命令。

命令分类

分类的方法是很多的,我采用使用场景来区分:

  1. 镜像管理: 静态数据
  2. 容器管理:动态运行实
  3. 资源管理: 网络与存储

镜像管理

容器镜像主要分俩类:从仓库拉取、将本地镜像推送到仓库

  1. 先来一组拉取镜像的命令
bash 复制代码
# 拉取最新版Nginx
docker pull nginx

# 拉取指定版本(如1.21.0)
docker pull nginx:1.21.0

# 拉取私有仓库镜像
docker pull docker.1ms.run/nginx:latest

说明:

A. 第一条命令有2个默认值,这也是docker常用的:

  1. 当不指定仓库名的时候,默认拉取hub.docker.com
  2. 当不支持镜像版本(tag)的时候,默认指得是latest

B. 第二条拉取指定版本镜像

C. 拉取私有仓库的镜像------------同时也可能通过镜像(代理)拉取镜像

拉取私有仓库或者通过代理拉取其他仓库(例如中央仓库hub.docker.com)的命令表现形式是一样的。

注: 为什么要代理呢?要镜像呢?因为hub.docker.com大部分时候是连不上的......

如果嫌弃每次都要加上代理的域名,比较麻烦:

bash 复制代码
# 直接拉取
docker pull nginx:latest

# 通过毫秒镜像拉取
docker pull docker.1ms.run/nginx:latest

是可以将这个镜像配置到服务中的(docker服务)

配置文件: /etc/docker/daemon.json

``{

"registry-mirrors": [

"https://docker.1ms.run"

]

}

复制代码
这时候默认就是从docker.1ms.run拉取了

2. 推送镜像到仓库

来一组推送命令:

```bash
docker push myapp:0.1

docker tag myapp:0.1 docker.cnb.cool/yiqiu/myapp:0.1
docker push docker.cnb.cool/yiqiu/myapp:0.1

简单说明:

  1. 第一条命令就是将镜像推送到默认仓库(hub.docker.com
  2. 将镜像推送到私库

注意,推送到指定仓库,是无法单独指定仓库名称的,唯一的方法就是将镜像重命名,将仓库名称带入到镜像的名称中:重新tag,这就是第二条指令的作用,类似于ln -s吧

辅助命令:

推送仓库、或者从私有仓库拉取,都是要登录的,要有权限控制的,下面是登录命令,执行后会提示输入密码:

bash 复制代码
docker login -u yiqiu docker.cnb.cool

如果你对自己搭建docker仓库和代理感兴趣,推荐:

使用nexus3搭建自己的制品服务器

容器管理

容器就是动态的概念了,就是运行中的镜像,内存中的,容器管理的就是容器的生命周期:

容器的创建、查看、监控、进入容器内部、停止、删除:

bash 复制代码
# 启动一个镜像
docker run -d -p 8080:80 --name mynginx nginx

# 查看当前宿主机运行中的镜像
docker ps 
docker ps -a #当前宿主机中的镜像,包含一键停止的

# 查看当前宿主机运行中的镜像的资源占用
docker stats

# 进入docker 内部的环境中
docker exec -it mynginx bash

# 停止镜像、启动镜像、重启镜像
docker stop mynginx
docker start mynginx
docker restart mynginx

# 删除镜像
docker rm mynginx

这些命令的实操:

日志的查看:

bash 复制代码
# 查看my-nginx的完整日志
docker logs mynginx

# 实时跟踪日志
docker logs -f mynginx

# 查看最后100行日志
docker logs --tail 100 mynginx

资源管理

docker 的资源,必须手工管理的,只有硬盘(文件夹)和网络(端口),其他资源(cpu、内存)都可以默认系统管理的。

网络资源已经写了两篇文章说明了,这里就部多说了,关于硬盘(文件夹):

作用:将数据独立于运行中的容器,以确保当容器生命周期结束的时候,数据能保存下来

有俩方式:

  1. 使用docker volume 创建数据卷

由docker引擎管理,可以使用本地硬盘、NFS、NAS等

常用命令:

bash 复制代码
# 创建数据卷
docker volume create myvol

# 查看
docker volume ls

# 删除
docker volume rm myvol
# 清理所有未用、匿名的数据卷
docker volume prune

实验结果:

  1. 使用-v参数直接映射本地文件夹

只能使用本地文件系统,但是可以宿主机可读

bash 复制代码
# 
mkdir ./data
docker run -it --rm -v ./data:/data alpine sh

实验结果:

清理资源

bash 复制代码
# 基础清理
docker system prune

# 清理所有未使用的镜像(包括未打标签的)
docker system prune -a

# 清理所有未使用的镜像、容器、网络和数据卷(慎用!)
docker system prune -a --volumes

小结

常用命令表格:


速查表:新手必备,收藏备用!

功能 核心命令 用例
拉取镜像 docker pull <镜像> docker pull nginx
查看镜像 docker images docker images
启动容器 docker run -d -p 80:80 --name <name> <image> docker run -d -p 8080:80 --name my-nginx nginx
查看容器 docker ps -a docker ps -a
进入容器 docker exec -it <name> /bin/bash docker exec -it my-nginx /bin/bash
查看日志 docker logs -f <name> docker logs -f my-nginx
停止容器 docker stop <name> docker stop my-nginx
删除容器 docker rm <name> docker rm my-nginx
清理环境 docker system prune -a docker system prune -a

本系列其他

  1. Docker 入门之基本概念

  2. Docker 入门之网络基础

  3. Docker 入门之overlay网络

  4. docker入门之单进程哲学与多进程管理

相关推荐
yuanzhengme3 小时前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
国产化创客3 小时前
RuView开源项目Docker+ESP32完整部署手册
物联网·docker·容器·开源·信息与通信·智能硬件·wifi-csi
SL-staff4 小时前
2026企业文档选型白皮书:功能、技术栈、私有化部署与采购建议
spring cloud·docker·微服务·kubernetes·开源·私有化部署·企业文档
VelinX4 小时前
FastGPT本地部署及其使用
云原生·eureka
曦月合一5 小时前
树莓派Debian 12 (bookworm) 系统 中Docker中运行mysql的流程
mysql·docker·容器
涛声依旧393165 小时前
Nginx+Docker 部署HTTPS站点+身份认证 完整实操一键部署脚本
nginx·docker·https
南宫萧幕5 小时前
基于上一篇文章VMware+openweb UI+ollama+docker的bug问题总结
docker·容器·bug·openweb ui
杨浦老苏6 小时前
开源数据库备份工具Databasus
数据库·docker·备份·群晖
晨旭缘6 小时前
docker compose升级版本问题:KeyError_ ‘ContainerConfig‘
docker·容器·eureka