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面试题总结》