方向和设置

预计阅读时间: 11分钟

欢迎!我们很高兴您想学习Docker。Docker入门教程教您如何:

  1. 设置您的Docker环境(在此页面上)
  2. 生成映像并将其作为一个容器运行
  3. 在开发机器上设置和使用Kubernetes环境
  4. 在开发机器上设置和使用Swarm环境
  5. 在Docker Hub上共享您的容器化应用程序

Docker概念

Docker是供开发人员和系统管理员使用容器构建,共享和运行应用程序的平台。使用容器来部署应用程序称为容器化 。容器不是新的,但用于轻松部署应用程序的容器却是新的。

容器化越来越受欢迎,因为容器是:

  • 灵活:即使最复杂的应用程序也可以容器化。
  • 轻量级:容器利用并共享主机内核,在系统资源方面比虚拟机更有效。
  • 可移植:您可以在本地构建,部署到云并在任何地方运行。
  • 松散耦合:容器是高度自给自足并封装的容器,使您可以在不破坏其他容器的情况下更换或升级它们。
  • 可扩展:您可以在数据中心内增加并自动分发容器副本。
  • 安全:容器将积极的约束和隔离应用于流程,而无需用户方面的任何配置。

容器是便携式的

图片和容器

从根本上讲,一个容器不过是一个正在运行的进程,并对其应用了一些附加的封装功能,以使其与主机和其他容器隔离。容器隔离的最重要方面之一是每个容器都与自己的私有文件系统进行交互。该文件系统由Docker 映像提供 。映像包括运行应用程序所需的所有内容-代码或二进制文件,运行时,依赖关系以及所需的任何其他文件系统对象。

容器和虚拟机

容器在Linux上本地运行 ,并与其他容器共享主机的内核。它运行一个离散的进程,不占用任何其他可执行文件更多的内存,从而使其轻巧。

相比之下, 虚拟机 (VM)运行具有“ 虚拟机管理程序”对主机资源的虚拟访问权的成熟“来宾”操作系统。通常,VM会产生大量开销,超出了应用程序逻辑所消耗的开销。

集装箱堆的例子 虚拟机堆栈示例

安装Docker桌面

开始开发容器化应用程序的最佳方法是使用OSX或Windows的Docker桌面。Docker Desktop允许您在本地开发机器上轻松设置Kubernetes或Swarm,因此您可以立即使用正在开发应用程序的Orchestrator的所有功能,而无需集群。请遵循适合您的操作系统的安装说明:

启用Kubernetes

Docker Desktop将为您快速轻松地设置Kubernetes。请遵循适用于您的操作系统的设置和验证说明:

OSX

  1. 安装Docker Desktop之后,您应该在菜单栏中看到一个Docker图标。单击它,然后浏览Preferences ...-> Kubernetes

  2. 选中标记为Enable Kubernetes的复选框,然后单击Apply 。Docker Desktop将自动为您设置Kubernetes。单击菜单栏中的Docker图标,您将知道一切都已成功完成,并且在“ Kubernetes正在运行”旁边看到绿灯。

  3. 为了确认Kubernetes已启动并正在运行,请创建一个名为pod.yaml的文本文件,其内容如下:

     apiVersion: v1
     kind: Pod
     metadata:
       name: demo
     spec:
       containers:
       - name: testpod
         image: alpine:3.5
         command: ["ping", "8.8.8.8"]
    

    这描述了具有单个容器的容器,将简单的ping隔离到8.8.8.8。

  4. 在终端中,导航到创建pod.yaml并创建您的pod:

     kubectl apply -f pod.yaml
    
  5. 检查您的Pod是否已启动并正在运行:

     kubectl get pods
    

    您应该看到类似以下内容:

     NAME      READY     STATUS    RESTARTS   AGE
     demo      1/1       Running   0          4s
    
  6. 检查您是否获得了ping操作所需的日志:

     kubectl logs demo
    

    您应该看到一个健康的ping过程的输出:

     PING 8.8.8.8 (8.8.8.8): 56 data bytes
     64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms
     64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms
     64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms
     ...
    
  7. 最后,拆除测试吊舱:

     kubectl delete -f pod.yaml
    

视窗

  1. 安装Docker Desktop之后,您应该在系统托盘中看到一个Docker图标。右键单击它,然后导航到设置-> Kubernetes

  2. 选中标记为Enable Kubernetes的复选框,然后单击Apply 。Docker Desktop将自动为您设置Kubernetes。请注意,这会花费大量时间(20分钟)。右键单击菜单栏中的Docker图标,单击“设置” ,然后看到“ Kubernetes正在运行”旁边的绿灯,您将知道一切都已成功完成。

  3. 为了确认Kubernetes已启动并正在运行,请创建一个名为pod.yaml的文本文件,其内容如下:

     apiVersion: v1
     kind: Pod
     metadata:
       name: demo
     spec:
       containers:
       - name: testpod
         image: alpine:3.5
         command: ["ping", "8.8.8.8"]
    

    这描述了具有单个容器的容器,将简单的ping隔离到8.8.8.8。

  4. 在powershell中,导航到创建pod.yaml并创建pod:

     kubectl apply -f pod.yaml
    
  5. 检查您的Pod是否已启动并正在运行:

     kubectl get pods
    

    您应该看到类似以下内容:

     NAME      READY     STATUS    RESTARTS   AGE
     demo      1/1       Running   0          4s
    
  6. 检查您是否获得了ping操作所需的日志:

     kubectl logs demo
    

    您应该看到一个健康的ping过程的输出:

     PING 8.8.8.8 (8.8.8.8): 56 data bytes
     64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms
     64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms
     64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms
     ...
    
  7. 最后,拆除测试吊舱:

     kubectl delete -f pod.yaml
    

启用Docker Swarm

Docker Desktop主要在Docker Engine上运行,它具有运行内置Swarm所需的一切。请遵循适用于您的操作系统的设置和验证说明:

OSX

  1. 打开一个终端,并初始化Docker Swarm模式:

     docker swarm init
    

    如果一切顺利,您应该看到类似以下的消息:

     Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager.
    
     To add a worker to this swarm, run the following command:
    
         docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377
    
     To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    
  2. 运行一个简单的Docker服务,该服务使用基于高山的文件系统,并将ping隔离到8.8.8.8:

     docker service create --name demo alpine:3.5 ping 8.8.8.8
    
  3. 检查您的服务是否创建了一个正在运行的容器:

     docker service ps demo
    

    您应该看到类似以下内容:

     ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
     463j2s3y4b5o        demo.1              alpine:3.5          docker-desktop      Running             Running 8 seconds ago
    
  4. 检查您是否获得了ping操作所需的日志:

     docker service logs demo
    

    您应该看到一个健康的ping过程的输出:

     demo.1.463j2s3y4b5o@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes
     demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms
     demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms
     demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms
     ...
    
  5. 最后,关闭测试服务:

     docker service rm demo
    

视窗

  1. 打开Powershell,然后初始化Docker Swarm模式:

     docker swarm init
    

    如果一切顺利,您应该看到类似以下的消息:

     Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager.
    
     To add a worker to this swarm, run the following command:
    
         docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377
    
     To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    
  2. 运行一个简单的Docker服务,该服务使用基于高山的文件系统,并将ping隔离到8.8.8.8:

     docker service create --name demo alpine:3.5 ping 8.8.8.8
    
  3. 检查您的服务是否创建了一个正在运行的容器:

     docker service ps demo
    

    您应该看到类似以下内容:

     ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
     463j2s3y4b5o        demo.1              alpine:3.5          docker-desktop      Running             Running 8 seconds ago
    
  4. 检查您是否获得了ping操作所需的日志:

     docker service logs demo
    

    您应该看到一个健康的ping过程的输出:

     demo.1.463j2s3y4b5o@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes
     demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms
     demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms
     demo.1.463j2s3y4b5o@docker-desktop    | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms
     ...
    
  5. 最后,关闭测试服务:

     docker service rm demo
    

结论

至此,您已经在开发机器上安装了Docker Desktop,并确认可以在Kuberentes和Swarm中运行简单的容器化工作负载。在下一节中,我们将开始开发我们的第一个容器化应用程序。

进入第2部分>>

CLI参考

此处提供了本文中使用的所有CLI命令的更多文档:

入门设置方向快速入门介绍概念容器docker桌面