Docker作为一款强大的容器化平台,极大地改变了应用程序的部署和管理方式。通过一系列简洁而功能丰富的命令,开发者和运维人员能够高效地创建、运行、管理和分享容器。本文将全面介绍常用的Docker命令,帮助你深入掌握Docker的使用技巧。
一、基础镜像操作命令
(一)搜索镜像
在Docker Hub等镜像仓库中查找所需镜像,使用docker search
命令。例如,要搜索官方的Nginx镜像:
docker search nginx
该命令会返回一系列与Nginx相关的镜像列表,包括镜像名称、描述、星级评价等信息,方便我们筛选合适的镜像。
(二)拉取镜像
确定目标镜像后,使用docker pull
命令将其下载到本地。拉取最新版的Nginx镜像:
docker pull nginx
如果需要指定版本,可以在镜像名称后加上:版本号
,如docker pull nginx:1.23.3
。
(三)列出本地镜像
查看已经下载到本地的镜像列表,使用docker images
命令:
docker images
输出结果会显示镜像的仓库名称、标签、镜像ID、创建时间以及大小等详细信息。
(四)删除镜像
当某个镜像不再需要时,可通过docker rmi
命令删除。例如,删除本地的Nginx镜像(假设镜像ID为1234567890ab
):
docker rmi 1234567890ab
也可以通过镜像名称和标签来删除,如docker rmi nginx:latest
。若要删除多个镜像,可同时指定多个镜像ID或名称标签组合。
二、容器操作命令
(一)创建并运行容器
使用docker run
命令可以基于镜像创建一个新容器并启动它。以下是一些常见的使用示例:
- 以默认配置启动一个Nginx容器,并将容器的80端口映射到主机的8080端口:
docker run -p 8080:80 nginx
-p
参数用于指定端口映射关系,格式为主机端口:容器端口
。
2. 启动一个交互式的Ubuntu容器,进入容器的命令行界面:
docker run -it ubuntu bash
-i
参数保持标准输入流打开,-t
参数为容器分配一个伪终端,这样我们就可以在容器内执行命令。
(二)列出运行中的容器
查看当前正在运行的容器,使用docker ps
命令:
docker ps
该命令会显示容器的ID、名称、运行的镜像、启动时间、状态以及端口映射等信息。若要查看所有容器(包括已停止的),可加上-a
参数:
docker ps -a
(三)停止和启动容器
停止正在运行的容器,使用docker stop
命令,指定容器ID或名称。例如,停止名为my_nginx
的容器:
docker stop my_nginx
要重新启动已停止的容器,使用docker start
命令:
docker start my_nginx
(四)进入正在运行的容器
当需要在运行中的容器内执行命令时,使用docker exec
命令。例如,进入正在运行的Nginx容器并查看其日志:
docker exec -it my_nginx tail -f /var/log/nginx/access.log
-it
参数同样用于保持交互模式,方便在容器内操作。
例如,进入容器执行 sh:
docker exec -it my_nginx sh
(五)删除容器
删除不再使用的容器,使用docker rm
命令。先停止容器,然后删除。例如,删除名为my_ubuntu
的容器:
docker stop my_ubuntu
docker rm my_ubuntu
也可以使用-f
参数强制删除正在运行的容器,但不推荐这种做法,可能会导致数据丢失或未完成的任务中断:
docker rm -f my_ubuntu
三、容器网络操作命令
(一)查看网络列表
Docker提供了多种网络模式,查看当前系统中的网络列表,使用docker network ls
命令:
docker network ls
输出结果会展示网络的ID、名称、驱动类型等信息。常见的网络驱动有bridge
、host
、overlay
等。
(二)创建自定义网络
创建一个自定义的桥接网络,例如:
docker network create -d bridge my_network
-d
参数指定网络驱动类型,这里选择bridge
驱动。自定义网络可以更好地管理容器之间的网络连接和通信。
(三)将容器连接到网络
创建容器时可以指定连接到某个网络,或者将已有的容器连接到新网络。例如,将一个已有的Nginx容器连接到前面创建的my_network
网络:
docker network connect my_network my_nginx
也可以在创建容器时通过--network
参数指定网络,如:
docker run --network=my_network -p 8080:80 nginx
四、数据卷操作命令
(一)创建数据卷
数据卷用于在容器和主机之间共享数据,确保数据的持久化。创建一个数据卷,使用docker volume create
命令:
docker volume create my_volume
(二)查看数据卷列表
查看系统中已创建的数据卷,使用docker volume ls
命令:
docker volume ls
(三)将数据卷挂载到容器
在创建容器时,通过-v
参数将数据卷挂载到容器内的指定目录。例如,将my_volume
数据卷挂载到Nginx容器的/usr/share/nginx/html
目录:
docker run -p 8080:80 -v my_volume:/usr/share/nginx/html nginx
这样,对容器内/usr/share/nginx/html
目录的操作会同步到my_volume
数据卷,即使容器被删除,数据依然保存在数据卷中。
(四)删除数据卷
当数据卷不再使用时,可以使用docker volume rm
命令删除:
docker volume rm my_volume
五、其他常用命令
(一)查看Docker系统信息
使用docker info
命令可以获取Docker系统的详细信息,包括容器和镜像的数量、存储驱动、内存和CPU使用情况等:
docker info
(二)构建镜像
如果有Dockerfile定义了镜像的构建规则,可以使用docker build
命令构建镜像。假设在当前目录下有一个Dockerfile,构建一个名为my_app:latest
的镜像:
docker build -t my_app:latest.
-t
参数用于指定镜像的标签,最后的.
表示构建上下文为当前目录。
(三)推送镜像到仓库
将本地构建好的镜像推送到远程镜像仓库(如Docker Hub),首先需要登录到仓库:
docker login
然后使用docker push
命令推送镜像,例如:
docker push my_app:latest