Docker 常用命令

Docker 常用命令

参考:Docker 从入门到实践

1 启动一个容器

# 通用示例:挂载当前目录、映射端口、指定名称/主机名,并授予特权 docker run -dit -v `pwd`:/root -p 8080:80 -p 4443:443 --name my-debian --hostname=debian --privileged=true debian # 指定工作目录、以 root 用户运行 docker run -dit --workdir /root -u root -v `pwd`:/root -p 80:80 --name nginx --hostname=nginx --privileged=true nginx # 添加所有 Linux Capabilities(相当于 --privileged,按需使用) docker run -dit --workdir /root -u root -v `pwd`:/root -p 80:80 --name openresty --hostname=openresty --cap-add=ALL --privileged=true openresty # 一次性运行(--rm 退出即删) docker run --rm -itd --name test-app registry.example.com/example/app:tag

参数说明:

  • -d:后台运行(detach);-i -t:交互式终端。
  • -v host_dir:container_dir:挂载目录(volume)。
  • -p 主机端口:容器端口:端口映射。
  • --name:容器名;--hostname:容器内 hostname。
  • --privileged=true:授予容器宿主机 root 的所有 Linux Capabilities。
  • --cap-add=ALL:添加所有 Linux Capabilities(比 --privileged 更细粒度)。
  • --workdir:容器启动后的工作目录;-u/--user:以指定用户运行。

2 进入容器

docker exec -it <container_id> /bin/bash

3 编译镜像

docker build -t hello-image .

-t 指定镜像名与标签,. 表示以上下文路径为当前目录(Dockerfile 默认也在此目录)。

4 停止 / 删除容器

# 停止所有运行中的容器 docker stop $(docker ps -a -q) # 删除所有已停止的容器 docker rm $(docker ps -aq -f status=exited) # 强制删除指定容器 docker rm -f <container_id>

5 将容器导出为 tar 文件

docker export containerName -o imageName.tar

6 将容器做成镜像(commit)

docker commit -m "python env" container_name registry.example.com/example/debian:tag

docker commit --help 输出:

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes Options: -a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>") -c, --change list Apply Dockerfile instruction to the created image -m, --message string Commit message -p, --pause Pause container during commit (default true)

注意:docker commit 得到的是“黑箱”镜像,无法复现构建过程,生产环境应优先使用 Dockerfile + docker build。

7 将镜像导出/导入为文件

docker save -o imageName.tar imageName:version docker load --input imageName.tar
# 示例 docker save -o go-flume.tar registry.example.com/example/go-flume:tag docker load --input go-flume.tar

8 删除不用的镜像

# 按名称过滤并删除(IMAGE ID) docker images | grep ipip-c | awk '{print $3}' | xargs docker rmi # 清理悬空镜像(dangling) docker image prune -f

9 查询容器的 IP

docker inspect --format '' <container_id> # 批量查询多个容器的 IP docker ps | grep runner | awk '{print $1}' | xargs docker inspect --format ''

10 将容器连接到指定的网络

docker network connect [OPTIONS] NETWORK CONTAINER docker network connect mynet mycontainer # 查看/断开 docker network inspect mynet docker network disconnect mynet mycontainer

11 其他常用组合

docker ps -a # 查看所有容器(含已停止) docker logs -f <container_id> # 跟踪容器日志 docker stats # 实时查看容器资源占用 docker top <container_id> # 查看容器内进程 docker inspect <container_id> # 查看容器/镜像的详细信息(JSON) docker system df # 查看磁盘占用
阅读 — · 全站 —
🎸 我的歌单 0 首