经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
Docker Compose使用教程
来源:cnblogs  作者:南风丶丶  时间:2024/2/7 9:54:47  对本文有异议

前言

这篇文章重点讲解docker compose的相关概念和命令。Compose是单机编排容器集群或者是分布式服务容器的应用工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。

  Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、容器端口映射等情况写在一个配置文件里,执行docker compose up命令就像执行脚本一样,一个一个的安装并部署容器。如下图所示,通过docker compose可以创建一个docker的集群。

1.使用Dockerfile创建镜像

我们可以使用Dockerfile文件,创建一个属于自己的镜像,首先是编写Dockerfile文件,然后是使用docker build命令。

可以使用nvidia的官方镜像,其中已经有了大部分的依赖包,下面是拉取pytorch镜像的命令:

官方地址:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch

  1. docker pull nvcr.io/nvidia/pytorch:23.05-py3

下面是Dockerfile文件,在nvidia镜像基础之上,安装了一些包,同时使用了ENTRYPOINT命令在容器启动时创建了一个jupyter-lab服务:

  1. FROM nvcr.io/nvidia/pytorch:23.05-py3
  2. WORKDIR /workspace
  3. USER root
  4. EXPOSE 8888
  5. ARG DEBIAN_FRONTEND=noninteractive
  6. RUN apt-get update && apt-get upgrade -y && apt-get install git -y
  7. # RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && pip install -r /workspace/requirements.txt
  8. RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  9. RUN pip install diffusers --upgrade
  10. RUN pip3 install torch torchvision torchaudio
  11. RUN pip install invisible_watermark transformers accelerate safetensors
  12. RUN apt-get update
  13. ENTRYPOINT ["jupyter-lab","--no-browser","--allow-root","--port=8888","--ip=0.0.0.0","--NotebookApp.token=123456"]

进入Dockerfile所在的目录执行build命令,并取个tag名称,注意后面有个'.'

  1. docker build -t my-image:20240205 .

2.上传镜像到私人仓库

使用以下命令给镜像打标签:

  1. docker tag my-image:20240205 registry.example.com/my-image:20240205

使用以下命令将镜像推送至registry.example.com私人仓库:

  1. docker push registry.example.com/my-image:20240205

使用以下命令拉取私人仓库中的镜像:

  1. docker pull registry.example.com/my-image:20240205

3.使用Docker Compose启动一个jupyter-lab服务

首先编写好yaml文件,也可以搭配docker-entrypoint.sh使用,因为镜像里起了jupyter-lab服务,所以下面的yaml注释了entrypoint,下面是docke-compose.yaml文件:

  1. version: '3.9'
  2. services:
  3. dl-train:
  4. image: registry.example.com/my-image:20240205
  5. ports:
  6. - "8811:8811"
  7. volumes:
  8. - "/home/lxj/workspace/models:/workspace/models"
  9. - "/home/lxj/workspace/src:/workspace/src"
  10. networks:
  11. - sdnet
  12. restart: always
  13. # entrypoint: ["sh","/workspace/src/jupyter-lab/docker-entrypoint.sh"]
  14. deploy:
  15. resources:
  16. reservations:
  17. devices:
  18. - driver: nvidia
  19. device_ids: ['0']
  20. capabilities: [gpu]
  21. networks:
  22. sdnet:
  23. ipam:
  24. driver: default
  25. config:
  26. - subnet: 192.168.12.0/24

下面是docker-entrypoint.sh文件,可以在里面写一些pip语句安装一些包:

  1. #!/bin/bash
  2. pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  3. pip install --upgrade jupyterlab
  4. # jupyter labextension install @jupyter-widgets/jupyterlab-manager
  5. jupyter-lab --no-browser --allow-root --port=8811 --ip=0.0.0.0 --NotebookApp.token=123456

最后进入yaml所在的目录,运行启动命令即可:

  1. docker compose up -d

4.Docker Compose常用命令

当我们起了一个容器后,需要对容器有一些操作,比如查看容器中服务的日志,停止容器重新启动,接下来讲一下docker compose中操作容器的常用命令:

  1. # 运行容器
  2. docker compose up
  3. # 在后台运行容器
  4. docker compose up -d
  5. # 指定yaml在后台运行容器
  6. docker compose -f docker-compose.prod.yaml up -d
  7. # 查看日志
  8. docker compose logs -f <service-name>
  9. # 也可以直接使用容器ID查看容器日志
  10. docker logs -f <container-id>
  11. # 进入容器
  12. docker attach <container-id> 不推荐,退出容器时,容器会停止
  13. docker exec -it <container-id> /bin/bash 推荐使用
  14. # 停止容器,并删除相应的配置,推荐使用,如果使用docker stop并不会删除容器的network和volume,使用下面的命令可以停止并删除由docker compose文件定义的容器、网络和卷
  15. docker compose down

5.总结

以上就是docke compose单机编排容器集群的讲解,使用yaml文件可以直观明了的使用容器,不管是日常做深度学习实验起一个单容器,还是部署一整个线上服务集群,使用docker compose容器编排技术都是十分方便快捷的。

原文链接:https://www.cnblogs.com/xinjieli/p/18007801

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号