Docker命令最全详解(39个最常用命令)

Docker是云原生的核心,也是大厂的必备技能,下面我就全面来详解Docker核心命令@mikechen

一、Docker 基本命令

docker info
显示 Docker 系统的详细信息,包括:容器数、镜像数、存储驱动…等。

比如:

$ docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 5
 Running: 2
 Paused: 0
 Stopped: 3
 Images: 8

docker version
显示客户端和服务端的版本信息。

比如:

$ docker version
Client:
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.16.5
 ...

Server:
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.16.5

 

二、镜像管理命令

docker pull <image_name>
从 Docker Hub 拉取镜像到本地。

比如:

$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
b8f5c7c582e4: Pull complete

docker push <image_name>
将本地镜像推送到 Docker Hub,比如:

$ docker push myusername/myimage:latest
The push refers to repository [docker.io/myusername/myimage]

docker build -t <tag_name> <path>
从 Dockerfile 构建镜像,并给镜像打上标签。

比如:

$ docker build -t myimage:1.0 .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM ubuntu:latest
...
Successfully tagged myimage:1.0

docker images
列出本地所有的镜像。

比如:

REPOSITORY          TAG                 IMAGE ID       CREATED        SIZE
my-nginx            latest              <IMAGE ID>   2 weeks ago    97.3MB
ubuntu              latest              <IMAGE ID>   3 weeks ago    72.9MB

docker rmi <image_name>
删除指定的镜像。

docker tag <source_image> <target_image>
为镜像打标签。

docker history <image_name>
查看镜像的历史层。

docker inspect <image_name>
查看镜像的详细信息,包括配置、层、依赖等。

 

三、容器管理命令

docker run <options> <image_name>
创建并启动一个新的容器。

比如:

docker run -d --name my-nginx -p 80:80 my-nginx

这会创建一个名为my-nginx的容器,并在后台运行,将容器的80端口映射到宿主机80端口。

常用参数:

-d:后台运行

-p <host_port>:<container_port>:端口映射

--name <container_name>:指定容器名称

-v <host_dir>:<container_dir>:挂载数据卷

--rm:容器退出时自动删除

docker ps
列出所有运行中的容器。

docker ps -a
列出所有容器(包括已停止的容器)。

比如:

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                  NAMES
3f1e5b6f9a9f        nginx:stable        "/docker-entrypoint.…"   4 minutes ago       Up 4 minutes               0.0.0.0:8080->80/tcp   mynginx
5ab2c8e5a6fe        ubuntu:latest       "/bin/bash"              2 days ago          Exited (0) 24 hours ago                          ubuntu-container

docker exec -it <container_name> <command>
在运行中的容器中执行命令。常用于进入容器的命令行。

docker start <container_name>
启动一个已停止的容器。

docker stop <container_name>
停止一个正在运行的容器。

docker restart <container_name>
重启容器。

docker kill <container_name>
强制停止一个容器。

docker rm <container_name>
删除一个已停止的容器。

docker logs <container_name>
查看容器的日志。

docker top <container_name>
查看容器内进程信息。

docker stats
实时查看容器的资源使用情况(CPU、内存、网络等)。

docker attach <container_name>
连接到运行中的容器的主进程。

四、网络管理命令

docker network ls
列出所有 Docker 网络。

比如:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
1f407d35a3e9        bridge              bridge              local
2e39f93861fc        host                host                local

docker network inspect <network_name>
查看某个网络的详细信息。

docker network create <network_name>
创建一个新的 Docker 网络。

docker network connect <network_name> <container_name>
将容器连接到某个网络。

docker network disconnect <network_name> <container_name>
从网络中断开容器。

五、数据卷管理命令

docker volume ls
列出所有 Docker 数据卷。

比如:

$ docker volume ls
DRIVER              VOLUME NAME
local               myvolume

docker volume inspect <volume_name>
查看数据卷的详细信息。

比如:

$ docker volume inspect myvolume
[
  {
    "CreatedAt": "2021-10-01T07:35:00Z",
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
    "Name": "myvolume",
    "Scope": "local"
  }
]

查看数据卷 myvolume 的详细信息。

docker volume create <volume_name>
创建一个新的数据卷。

docker volume rm <volume_name>
删除指定的数据卷。

六、Docker 镜像和容器的清理命令

docker system prune
删除所有未使用的容器、网络和镜像。

比如:

$ docker system prune
WARNING! This will remove:
 - All stopped containers
 - All unused networks
 - All dangling images
 - All build cache
Are you sure you want to continue? [y/N] y

 

可以使用 -a 参数删除所有未被使用的镜像。

docker container prune
删除所有已停止的容器。

docker image prune
删除所有未使用的镜像。

docker volume prune
删除所有未使用的数据卷。

docker network prune
删除所有未使用的网络。

七、Docker Compose 相关命令

docker-compose up
启动服务,根据 docker-compose.yml 文件启动多个容器。

比如:

$ docker-compose up
Creating network "myapp_default" with the default driver
Creating myapp_db_1  ... done
Creating myapp_web_1 ... done

根据 docker-compose.yml 启动服务。

docker-compose down
停止并删除服务和容器。

docker-compose logs
查看 Docker Compose 启动的服务的日志。

docker-compose build
构建服务。

八、其他常用命令

docker info
显示 Docker 系统的详细信息。

docker events
查看 Docker 守护进程的事件流。

docker save <image_name> > <file_name>.tar
将镜像保存为一个 .tar 文件。

docker load < <file_name>.tar
.tar 文件加载 Docker 镜像。

docker login
登录 Docker Hub 或其他 Docker 注册中心。

docker logout
登出 Docker Hub 或其他 Docker 注册中心。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧