Docker的常用命令

时间:2024-03-01 19:59:20

Docker的常用命令

Docker是一个开源的应用容器引擎,它使得开发者能够打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间没有任何接口(类似于iOS系统上的APP)。今天,我们将一起探讨Docker的一些常用命令。

1. Docker基础命令

  • docker version:查看Docker的版本信息。
  • docker info:查看Docker的系统信息,包括容器和镜像的数量等。
  • docker --help:查看Docker的帮助文档。

2. 镜像相关命令

  • docker images:列出本地所有的镜像。
  • docker search <镜像名>:在Docker Hub中搜索镜像。
  • docker pull <镜像名>:<标签>:从Docker Hub中拉取镜像。如果不写标签,默认拉取最新版本。
  • docker rmi <镜像ID>:删除指定的镜像。

3. 容器相关命令

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:创建并启动一个容器。这是最常用的Docker命令。
  • docker ps:查看正在运行的容器。加上-a参数可以查看所有容器(包括停止的)。
  • docker stop <容器ID>:停止正在运行的容器。
  • docker start <容器ID>:启动已停止的容器。
  • docker restart <容器ID>:重启容器。
  • docker rm <容器ID>:删除容器。注意,只能删除已停止的容器。如果要删除正在运行的容器,需要先停止它。
  • docker exec -it <容器ID> /bin/bash:进入正在运行的容器。

4. 其他常用命令

  • docker logs <容器ID>:查看容器的日志信息。
  • docker cp <容器ID>:/文件路径 /宿主机路径:从容器中拷贝文件到宿主机。
  • docker commit <容器ID> <新镜像名>:<标签>:从容器创建一个新的镜像。这在你对容器进行了修改,并希望保存这些修改为一个新的镜像时非常有用。

当然,让我们继续深入探讨Docker的更多常用命令和高级功能。

5. Docker网络相关命令

  • docker network ls:列出所有Docker网络。
  • docker network create <网络名>:创建一个新的Docker网络。
  • docker network rm <网络名>:删除一个Docker网络。注意,只能删除没有容器连接的网络。
  • docker network connect <网络名> <容器名>:将容器连接到网络。
  • docker network disconnect <网络名> <容器名>:将容器从网络中断开。

6. Docker数据卷相关命令

  • docker volume ls:列出所有Docker数据卷。
  • docker volume create <卷名>:创建一个新的Docker数据卷。
  • docker volume rm <卷名>:删除一个Docker数据卷。
  • docker volume inspect <卷名>:查看Docker数据卷的详细信息。

7. Docker Compose相关命令

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过Compose,你可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。

  • docker-compose up:创建并启动所有服务。加上-d参数可以在后台运行。
  • docker-compose down:停止并删除所有服务。加上--volumes参数还可以删除关联的数据卷。
  • docker-compose ps:查看正在运行的服务。
  • docker-compose logs:查看服务的日志信息。
  • docker-compose exec <服务名> <命令>:在服务中执行命令。

8. Docker Swarm相关命令

Docker Swarm是一个容器编排工具,它允许用户轻松地在集群上部署、扩展和管理容器。Swarm提供了高可用性和容错性,可以确保你的应用程序始终在线。

  • docker swarm init:初始化一个新的Swarm集群。
  • docker swarm join:将节点加入到Swarm集群。
  • docker swarm leave:将节点从Swarm集群中移除。
  • docker node ls:列出Swarm集群中的所有节点。
  • docker service create:在Swarm集群上创建一个新的服务。
  • docker service ls:列出Swarm集群中的所有服务。
  • docker service scale <服务名>=<副本数>:扩展或缩减服务的副本数。
  • docker service rm <服务名>:删除一个服务。

8.示例

当然,以下是一些Docker常用命令的示例:

1. 拉取镜像

拉取一个名为nginx的镜像,标签为latest

docker pull nginx:latest

2. 列出本地镜像

查看本地存储的所有镜像:

docker images

3. 创建并启动容器

使用nginx:latest镜像创建一个名为my_nginx的容器,并在后台运行:

docker run --name my_nginx -d nginx:latest

将容器的80端口映射到主机的8080端口,并创建容器:

docker run --name my_nginx -p 8080:80 -d nginx:latest

4. 查看正在运行的容器

查看当前正在运行的容器:

docker ps

查看所有容器(包括已停止的):

docker ps -a

5. 停止和启动容器

停止名为my_nginx的容器:

docker stop my_nginx

启动已被停止的名为my_nginx的容器:

docker start my_nginx

6. 删除容器

删除已停止的名为my_nginx的容器:

docker rm my_nginx

强制删除正在运行的名为my_nginx的容器:

docker rm -f my_nginx

7. 进入容器

进入正在运行的名为my_nginx的容器,并执行/bin/bash命令:

docker exec -it my_nginx /bin/bash

8. 查看容器日志

查看名为my_nginx的容器的日志信息:

docker logs my_nginx

以上就是一些Docker常用命令的示例,希望对你有所帮助!在实际使用中,你可以根据需要进行组合和调整。
当然,我们可以继续探讨更多Docker命令的示例。

9. 创建自定义镜像

假设你已经在容器中做了一些修改,并希望将这些修改保存为一个新的镜像。首先,你需要找到容器的ID或名称:

docker ps -a

假设容器的ID是abcd1234,你可以使用commit命令创建一个新的镜像:

docker commit abcd1234 my_custom_nginx:v1

这将会创建一个新的镜像,名称为my_custom_nginx,标签为v1

10. 导出和导入容器

如果你想将一个容器导出为tar文件,可以使用export命令:

docker export abcd1234 > my_container.tar

之后,你可以将这个tar文件导入到其他Docker环境中,创建一个新的镜像:

cat my_container.tar | docker import - my_imported_container:v1

注意:通常更推荐使用docker commit来创建镜像,因为export/import不会保留容器的历史记录和元数据。

11. 保存和加载镜像

如果你想保存一个镜像(包括其所有层和元数据)为tar文件,可以使用save命令:

docker save -o nginx_image.tar nginx:latest

之后,你可以加载这个tar文件到其他Docker环境中:

docker load -i nginx_image.tar

12. 构建镜像

使用build命令和Dockerfile来构建一个新的镜像:

docker build -t my_app:v1 .

这里的.表示Dockerfile位于当前目录中。-t参数用于指定新镜像的名称和标签。

13. 查看容器资源使用情况

查看容器的CPU、内存、网络等资源使用情况:

docker stats my_nginx

14. 清理Docker系统

删除所有停止的容器:

docker container prune

删除所有未使用的镜像(不包括正在运行的容器所使用的镜像):

docker image prune

删除所有未使用的网络和数据卷:

docker system prune -a

注意:使用docker system prune -a命令时要小心,因为它会删除所有未使用的资源,包括未连接的网络和未使用的数据卷。如果你想保留这些数据,请不要使用-a选项。

这些示例应该涵盖了Docker的大部分常用命令。当然,Docker的功能非常丰富,还有更多高级用法和选项等待你去探索。