Docker

104 阅读5分钟

一、什么是Docker?

Docker通过提供一种标准化隔离便携高效的方式来打包、分发和运行应用程序,极大地简化了应用程序的部署和管理。

形象化的解释:

Docker就像一个超级高效的集装箱运输系统,但这次它运输的不是货物,而是应用程序及其运行环境

  1. 标准化:每个集装箱(Docker容器)都有相同的尺寸和接口,这意味着无论你的货物(应用程序)是什么,都可以装入这些标准化的集装箱中。这样,无论是运输到哪个港口(服务器或云环境),都能确保货物(应用程序)的安全和完整。
  2. 隔离:每个集装箱内部都是独立的。即使两个集装箱都装有相同类型的货物(比如两个相同的应用),它们之间也不会互相干扰。这意味着你可以在同一个码头(服务器)上运行多个应用程序,而不会担心它们之间的冲突。
  3. 便携性:集装箱使得货物(应用程序)可以轻松地从一个地方移动到另一个地方,而不需要重新打包或改变其内部结构。这类似于Docker容器,你可以轻松地将应用程序从一个开发环境移动到生产环境,只需“提起”并“放下”这个集装箱。
  4. 效率:集装箱运输大大提高了运输效率,减少了装卸时间和成本。Docker也是如此,它使得应用程序的部署、管理和扩展变得更加高效和快速。

二、Docker的核心概念

  • 镜像(Image) :这是集装箱的设计图纸,包含了应用程序的所有代码、依赖库、配置文件等。你可以根据这个图纸来制造一个或多个集装箱(容器)。
  • 容器(Container) :这是根据镜像创建的实例,相当于一个正在运行的集装箱。每个容器都是独立的,有自己的操作系统环境、文件系统、网络等。
  • 仓库(Registry) :这是一个存储镜像的地方,类似于集装箱的仓库。你可以从仓库中拉取(下载)镜像来创建容器,也可以将自己的镜像推送到仓库中供他人使用。

三、Docker的基本使用

1、Docker服务管理命令

  1. 启动Docker服务

    	systemctl start docker
    

    该命令用于启动Docker服务。

  2. 关闭Docker服务

    	systemctl stop docker
    

    该命令用于关闭Docker服务。

  3. 重启Docker服务

    	systemctl restart docker
    

    该命令用于重启Docker服务。

  4. 设置Docker开机启动

    	systemctl enable docker
    

    该命令用于设置Docker服务在系统启动时自动启动。

  5. 查看Docker运行状态

    	systemctl status docker
    

    该命令用于查看Docker服务的运行状态。

2、Docker镜像管理命令

  1. 查看本地镜像列表

    	docker images
    

    该命令用于列出本地存储的所有Docker镜像。如下:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

-   REPOSITORY: 镜像的名称或仓库名。
-   TAG: 镜像的标签,通常用于版本控制。
-   IMAGE ID: 镜像的唯一标识符。
-   CREATED: 镜像的创建时间。
-   SIZE: 镜像的大小。

  1. 搜索远程镜像

    	docker search [镜像名]
    

    该命令用于在Docker Hub等远程仓库中搜索指定的镜像。

  2. 拉取远程镜像

    	docker pull [镜像名]:[tag]
    

    如果不指定tag,则默认拉取latest版本的镜像。该命令用于从远程仓库下载指定的镜像到本地。

  3. 删除本地镜像

    	docker rmi -f [镜像名/镜像ID]
    

    该命令用于删除指定的本地镜像。

  4. 查看镜像、容器、数据卷所占用的空间

     docker system df
    

    该命令用于分析Docker磁盘使用情况,包括镜像、容器和数据卷所占用的空间。

  5. 保存镜像为tar文件

    	docker save [镜像名/镜像ID] -o [保存路径和文件名].tar
    

    该命令用于将指定的镜像保存为tar压缩文件,方便镜像的转移和保存。

  6. 加载tar文件中的镜像

    	docker load -i [tar文件路径]
    

    该命令用于从tar压缩文件中加载镜像,使其恢复为一个可用的Docker镜像。

3、Docker容器管理命令

  1. 运行容器

    	docker run [OPTIONS] [IMAGE] [COMMAND] [ARG...]
    

    其中,OPTIONS为可选参数,用于配置容器的各种选项,如端口映射、容器名称等;IMAGE为要运行的镜像名称或ID;COMMAND和ARG为可选的命令和参数,用于在容器内执行特定的命令。

  2. 查看正在运行的容器

    	docker ps
    

    该命令用于列出当前所有正在运行的容器。

  3. 查看所有容器(包括未运行的)

      docker ps -a
    
  4. 停止容器

    	docker stop [容器名/容器ID]
    

    该命令用于停止正在运行的容器。

  5. 启动已停止的容器

    	docker start [容器名/容器ID]
    

    该命令用于启动已经停止运行的容器。

  6. 重启容器

    	docker restart [容器名/容器ID]
    

    该命令用于重启正在运行的容器。

  7. 删除容器

    	docker rm -f [容器名/容器ID]
    

    该命令用于删除已经停止运行的容器。如果容器正在运行,则需要先停止容器再删除。

  8. 进入容器内部

    	docker exec -it [容器名/容器ID] /bin/bash
    

    	docker attach [容器名/容器ID]
    

    但推荐使用docker exec命令,因为docker attach命令在退出时会导致容器停止。docker exec命令可以在容器内部执行特定的命令,并保持容器的运行状态。

  9. 查看容器日志

    	docker logs [容器名/容器ID]
    

    该命令用于查看容器的日志输出。

  10. 查看容器详细信息

```
	docker inspect [容器名/容器ID]
```

该命令用于获取容器的详细信息,包括配置、状态、网络设置等。

11. 复制文件或目录到容器中

```
	docker cp [主机路径] [容器名/容器ID]:[容器路径]
```

该命令用于将主机上的文件或目录复制到容器中指定的路径下。

12. 从容器中复制文件或目录到主机

```
	docker cp [容器名/容器ID]:[容器路径] [主机路径]
```

该命令用于将容器中的文件或目录复制到主机上指定的路径下。