Docker入门

简介

  • 为什么需要docker?

    不同物理机器可能配置完全不一样,即便都是Linux系统但是比如Ubuntu和CentOS也有差别,而对于测试、部署需要相同的环境(包括各种软件:数据库、web服务器等),所以需要一种工具来模拟完全相同的开发环境。

    虚拟机是一种思路,模拟硬件并运行整个OS,但是太过于笨重、性能低下、占用资源多。Docker和虚拟机类似,但是不模拟硬件,而是为每个应用提供完全隔离的运行环境,不同环境之间互不影响,这就是所谓的容器Container

    image-20230927235111057

  • 什么是Docker?

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

  • 基本概念

    DockerfileImageContainer

    image-20230927235238743

    Dockerfile:用来构建镜像(Image)的自动化脚本,文本内容包含了一条条构建镜像所需的指令和说明,案例如下:

    image-20230928000741479

    Image镜像:虚拟机的快照,包含了所要部署的应用程序和需要的库。镜像可以看作容器的模板,通过镜像可以创建不同的容器,容器类似于不同的虚拟机,容器之间互不影响。
    image-20230927235402899

常用命令

  • Docker服务

    • sudo service docker start
    • sudo systemctl start docker
  • 镜像

    • docker build /path/to/a/Dockerfile Build an image from a Dockerfile即根据Dockerfile创建镜像,如下:

      **docker build . -t my-image**:用于根据Dockerfile的内容构建镜像,-t 选项用于指定镜像名称,my-image 是你为镜像命名的名称,可以替换成其他任意名称。. 表示当前目录,指示 Docker 在当前目录下寻找 Dockerfile 文件。以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)
      docker build . -t nginx:v3

    • docker image ls列出本机的所有 image 文件

    • **docker image pull**将 image 文件从仓库抓取到本地

    • docker image rm [imageName]删除image

  • 容器

    • docker ps -a or docker container ls列举所有容器

    • **docker container run --name container_name IMAGE_NAME**从image文件生成一个正在运行的容器实例,–name指定生成的容器名称,container可以不写,即docker run ...

      TODO:docker run -it IMAGE_NAME[:TAG]

    • docker container start [containerID]启动已经生成、已经停止运行的容器文件

    • docker container stop [containerID]停止容器

    • docker container kill[containerID]对于那些不会自动终止的容器,必须使用docker container kill 命令手动终止容器。该命令和stop命令的区别在于向container中的进程发送的信号不同,具体见阮一峰:Docker 入门教程

    • docker container restart [containerID]重启容器

    • **docker container attach**Attach local standard input, output, and error streams to a running container

    • docker container rm [containerID]删除容器

其他

参考

Docker官方文档

视频:Docker 10分钟快速入门

阮一峰:Docker 入门教程

廖雪峰:一文读懂Docker原理

The End


Docker入门
http://franktjp.com/2023/10/06/docker入门/
作者
Franktjp
发布于
2023年10月6日
许可协议