Docker 命令详解:容器、镜像、网络和数据卷管理

发布于:2024-02-29 ⋅ 阅读:(82) ⋅ 点赞:(0)


Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
以下是一些常用的 Docker 命令及其用法和场景:

1. docker run

命令: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
用法: 启动一个新容器。
场景: 当你想要从一个镜像创建一个新容器并运行一个命令时使用。
示例:

  • 启动一个名为 my_containerubuntu 镜像容器并执行 echo "Hello, Docker!" 命令:
    docker run -name my_container -it ubuntu echo "Hello, Docker!"
    

2. docker pull

命令: docker pull [OPTIONS] NAME[:TAG|@digest]
用法: 从仓库拉取或者更新指定的镜像。
场景: 当你需要下载一个镜像到本地仓库时使用。
示例:

  • 从 Docker Hub 拉取最新的 ubuntu 镜像:
    docker pull ubuntu
    

3. docker images

命令: docker images [OPTIONS]
用法: 列出本地存储的镜像。
场景: 当你需要查看本地所有镜像列表时使用。
示例:

  • 查看本地所有镜像:
    docker images
    

4. docker ps

命令: docker ps [OPTIONS]
用法: 列出当前运行的容器。
场景: 当你需要查看当前运行的容器列表时使用。
示例:

  • 查看所有运行中的容器:
    docker ps
    

5. docker stop

命令: docker stop [OPTIONS] NAME|ID
用法: 停止一个运行中的容器。
场景: 当你需要停止一个不再需要的运行中的容器时使用。
示例:

  • 停止名为 my_container 的容器:
    docker stop my_container
    

6. docker rm

命令: docker rm [OPTIONS] NAME|ID
用法: 删除一个或多个容器。
场景: 当你需要删除一个不再需要的容器时使用。
示例:

  • 删除名为 my_container 的容器:
    docker rm my_container
    

7. docker commit

命令: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
用法: 将容器的当前状态作为一个新的镜像保存。
场景: 当你对一个运行中的容器做了修改,并希望保存这些修改作为一个新的镜像时使用。
示例:

  • 将名为 my_container 的容器提交为一个新镜像,命名为 new_image
    docker commit my_container new_image
    

8. docker exec

命令: docker exec [OPTIONS] NAME|ID COMMAND [ARG...]
用法: 在运行的容器中执行命令。
场景: 当你需要在运行中的容器中执行命令时使用。
示例:

  • 在名为 my_container 的容器中执行 ls 命令:
    docker exec my_container ls
    

9. docker logs

命令: docker logs [OPTIONS] NAME|ID
用法: 获取容器的日志输出。
场景: 当你需要查看或跟踪容器的输出时使用。
示例:

  • 查看名为 my_container 的容器的日志输出:
    docker logs my_container
    

10. docker network

命令: docker network [OPTIONS] COMMAND
用法: 管理 Docker 的网络设置。
场景: 当你需要创建或管理容器的网络连接时使用。
示例:

  • 创建一个名为 my_network 的网络:
    docker network create my_network
    

11. docker volume

命令: docker volume [OPTIONS] COMMAND
用法: 管理 Docker 的数据卷。
场景: 当你需要持久化或共享容器数据时使用。
示例:

  • 创建一个数据卷:
    docker volume create my_volume
    
  • 查看所有数据卷:
    docker volume ls
    
  • 查看指定数据卷的信息:
    docker volume inspect my_volume
    
  • 删除一个数据卷:
    docker volume rm my_volume
    
  • 挂载一个数据卷到容器:
    docker run -d --name my_container -v my_volume:/path/to/mounted_volume my_image
    
  • 挂载一个本地目录到容器:
    docker run -d --name my_container -v /local/path:/path/to/mounted_volume my_image
    
  • 挂载一个只读卷:
    docker run -d --name my_container -v my_volume:/path/to/mounted_volume:ro my_image
    
  • 挂载多个卷:
    docker run -d --name my_container -v my_volume:/path/to/mounted_volume -v another_volume:/path/to/another_mounted_volume my_image
    

说明:

  • create: 创建一个新的数据卷。
  • ls: 列出所有本地数据卷。
  • inspect: 显示关于一个或多个数据卷的信息。
  • rm: 删除一个或多个数据卷。
  • mount: 挂载一个数据卷或本地目录到容器中。
    在挂载数据卷时,你可以使用本地目录,也可以挂载现有的数据卷。挂载时指定的路径在容器内部可见,并且可以作为容器内的文件系统路径使用。还可以通过 :ro 选项将卷挂载为只读,或者使用 :Z 选项(在 Linux 上)来设置卷的权限。
    数据卷是 Docker 中非常重要的一个功能,它使得数据的持久化和共享变得简单,并且可以跨容器的使用数据卷,这在多个容器之间共享数据时非常有用。

12. docker save

命令: docker save [OPTIONS] NAME|ID
用法: 将一个或多个镜像保存到本地文件。
场景: 当你需要备份或传输镜像时使用。
示例:

  • 将名为 my_image 的镜像保存到当前目录下的 my_image.tar 文件:
    docker save my_image > my_image.tar
    

13. docker load

命令: docker load [OPTIONS] file
用法: 从本地文件加载一个镜像。
场景: 当你需要从备份或传输的文件中恢复镜像时使用。
示例:

  • 从当前目录下的 my_image.tar 文件加载镜像:
    docker load < my_image.tar
    

14. docker tag

命令: docker tag [OPTIONS] IMAGE[:TAG|@digest] REPOSITORY[:TAG]
用法: 标记一个镜像以便于引用。
场景: 当你需要给镜像打上标签以便于管理时使用。
示例:

  • 将名为 my_image 的镜像标记为 REPOSITORY/my_image:latest
    docker tag my_image REPOSITORY/my_image:latest
    

15. docker search

命令: docker search [OPTIONS] QUERY
用法: 在 Docker Hub 上搜索镜像。
场景: 当你需要查找可在 Docker Hub 上使用的镜像时使用。
示例:

  • 在 Docker Hub 上搜索 ubuntu 镜像:
    docker search ubuntu
    

以上就是 Docker 的一些常用命令及其用法和场景。掌握这些命令,你可以更好地使用 Docker 来进行开发、测试和部署你的应用程序。

16. docker diff

命令: docker diff [OPTIONS] CONTAINER
用法: 显示容器的更改信息。
场景: 当你需要查看容器自上次启动以来有何更改时使用。
示例:

  • 查看名为 my_container 的容器的更改:
    docker diff my_container
    

17. docker cp

命令: docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
用法: 在容器之间或容器与宿主机之间复制文件或目录。
场景: 当你需要在容器之间,或容器与宿主机之间传输文件时使用。
示例:

  • 从名为 my_container 的容器中复制 /app/data 文件到宿主机的 /home/user/ 目录:
    docker cp my_container:/app/data /home/user/
    

18. docker pause

命令: docker pause [OPTIONS] NAME|ID
用法: 暂停一个或多个正在运行的容器。
场景: 当你需要临时停止一个或多个容器时使用。
示例:

  • 暂停名为 my_container 的容器:
    docker pause my_container
    

19. docker unpause

命令: docker unpause [OPTIONS] NAME|ID
用法: 恢复一个或多个被暂停的容器。
场景: 当你需要恢复一个或多个被暂停的容器时使用。
示例:

  • 恢复名为 my_container 的容器:
    docker unpause my_container
    

20. docker attach

命令: docker attach [OPTIONS] NAME|ID
用法: 连接到正在运行的容器的标准输入。
场景: 当你需要与正在运行的容器交互时使用。
示例:

  • 连接到名为 my_container 的运行中的容器:
    docker attach my_container
    

21. docker stats

命令: docker stats [OPTIONS] NAME|ID
用法: 显示容器的资源使用情况。
场景: 当你需要监控容器的资源使用情况时使用。
示例:

  • 显示所有运行中的容器的资源使用情况:
    docker stats --all
    

22. docker wait

命令: docker wait [OPTIONS] NAME|ID
用法: 等待一个或多个容器停止。
场景: 当你需要在容器停止后进行其他操作时使用。
示例:

  • 等待名为 my_container 的容器停止:
    docker wait my_container
    

23. docker rmi

命令: docker rmi [OPTIONS] NAME|ID
用法: 删除一个或多个镜像。
场景: 当你需要删除一个或多个不再需要的镜像时使用。
示例:

  • 删除名为 my_image 的镜像:
    docker rmi my_image
    

24. docker build

命令: docker build [OPTIONS] PATH
用法: 使用 Dockerfile 构建镜像。
场景: 当你需要从 Dockerfile 构建一个镜像时使用。
示例:

  • 从当前目录下的 Dockerfile 构建镜像:
    docker build .