跳至主要內容

常用命令

chanchaw大约 4 分钟devOpsdocker

赋予普通用户执行docker的权限

只要将用户添加到 docker 的用户组就可以了
将普通用户添加到docker组中.png

docker的组成

0.1 docker的组成.png
0.1 docker的组成.png

启动与停止服务

启动与停止服务.png
启动与停止服务.png

仓库、镜像相关

  • 搜索仓库 docker search tomcat 后面的 tomcat 是想要搜索的应用的名称
  • 拉取镜像/下载镜像 docker pull tomcat 像上面的命令在应用名称后面没有跟随 TAG 则表示下载最新版本
  • 拉取 CentOS 拉取最新版本的 CentOS:docker pull centos 拉取指定版本的:docker pull centos:7
  • 查看本地仓库 docker image ls
  • 镜像常用操作 删除本地所有镜像 docker rmi docker images -q``
    镜像常用操作.png
  • 注册镜像文件,如果有镜像文件,可以上传到 linux 系统后注册到 docker 中。切换到 nacos.tar 所在目录执行下面命令
docker load -i nacos.tar

之后就可以通过 docker ls 查看本机的镜像

容器相关

交互式容器

交互式容器.png
交互式容器.png

守护式容器

创建并启动守护式容器.png
创建并启动守护式容器.png

最简单的启动容器:

  • 最简单的启动方法:docker start 容器名称 (这种方法是通过复杂的启动容器命令已经成功创建了该容器,才能这样通过已经存在的容器名称启动)
  • 查看日志
# 查看最近30分钟的日志(指定容器)
sudo docker logs --since 30m [容器ID或者容器名称]
  • 运行镜像 - 启动容器,前面的8080是宿主机的端口号(即云服务器的端口号),后面的8080是容器内的端口号,一般就使用应用官方默认的端口号(比如 tomcat 官方使用8080,mysql官方使用3306)
    运行镜像.png 运行容器命令的参数介绍:
    运行容器的参数.png

  • 查看当前运行中的容器:docker ps 查看本机所有容器(不管是否在运行都会显示):docker ps -a
    查看运行中的容器.png

  • 停止容器:docker stop 容器名称

  • 查看容器日志
    查看容器日志.png

  • 进入容器 docker exec -it 容器ID(或者容器名称) /bin/bash

  • 退出容器 ctrl+d

  • 重启容器 docker restart 容器ID

  • 删除容器:docker rm 容器名称(记得先停止容器的运行)

  • 宿主机与docker容器间拷贝文件
    宿主机与docker容器间拷贝文件.png

  • 目录挂载 目录挂载.png

  • 运行容器时挂载目录案例演示 运行容器时挂载目录.png 挂载时候如果是多级目录可能有权限问题 挂载多级目录时的权限问题.png

  • 查看容器IP 查看容器IP.png

从宿主机拷贝文件到容器中

从宿主机拷贝文件到容器中.png
从宿主机拷贝文件到容器中.png

从容器拷贝文件到宿主机

将容器中的文件拷贝到宿主机中.png
将容器中的文件拷贝到宿主机中.png

挂载目录

挂载目录.png 如果挂载目录出现没有权限的提示,通过 --privileged=true 来解决

下面是 2025年7月26日 在 ubuntu24 上以 docker 方式安装的 lucky 容器内创建目录并挂载到宿主机的步骤

# 执行下面命令会提示:
# OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
# 说明 lucky 的镜像使用的是精简版 Linux,例如 Alpine
sudo docker exec -it lucky /bin/bash
# 应该更换为:
sudo docker exec -it lucky /bin/sh

# 创建目录并设置权限
mkdir -p /data/webdav
cd ..
chmod 777 webdav -R
exit

日志

Docker 容器的日志默认存储在宿主机的 /var/lib/docker/containers/[容器ID]/[容器ID]-json.log 文件中

# 获取 Seata 容器的 ID
docker inspect --format='{{.Id}}' seata
# 获得容器ID后,其日志文件是 /var/lib/docker/containers/[容器ID]/[容器ID]-json.log
# 使用 truncate 清空文件(保留文件,内容归零)
sudo truncate -s 0 /var/lib/docker/containers/[容器ID]/[容器ID]-json.log
# 或者直接删除日志文件(Docker 会自动重建)
sudo rm /var/lib/docker/containers/[容器ID]/[容器ID]-json.log

# 查看实时日志
docker logs 容器ID或容器名
# 查看并实时跟踪日志
docker logs -f 容器ID或容器名
# 查看最近100行日志内容
docker logs --tail 100 容器ID或容器名  # 查看最后100行
# 查看指定时间段日志
docker logs --since 2024-01-01T00:00:00 容器ID或容器名
docker logs --since 1h 容器ID或容器名  # 最近1小时的日志

# 查看最后50行并实时跟踪,显示时间戳
docker logs --tail 50 -f -t 容器ID或容器名