对于深度学习的训练来说,不需要把容器当做一个服务,而是当做一个虚拟机或虚拟环境,这时只需要用Dockerfile就够了。

对于mysql等需要把容器当做服务时,使用docker-compose直接创建服务更方便。

使用Dockerfile构建定制化镜像

现有的公开docker也许不能满足我们的需求,或与我们的需求有出入,这时我们就需要定制一个合适的镜像。

编写Dockerfile

基于ubuntu官方的精简版ubuntu22.04镜像,换源并安装一些常用命令和库。

# 基于官方的Ubuntu 22.04
FROM ubuntu:22.04

# 替换Ubuntu的源为阿里源
RUN echo '\
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse\n\
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse\n\
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse\n' > /etc/apt/sources.list

# 更新apt-get索引
RUN apt-get update

# 安装你需要的命令和库,例如vim和gcc
RUN apt-get install -y vim nano wget curl git htop gcc g++

# 安装Python 3
RUN apt-get install -y python3 python3-pip

构建docker镜像

docker build -t my-ubuntu:22.04 .
  • “my-ubuntu:22.04”:镜像名
  • “ . ”:在当前路径下查找Dockerfile

使用docker-compose创建服务(构建镜像并运行容器)

编写Dockerfile

如上文。

编写docker-compose.yml

下面是一个较全的模板。

# 指定Docker Compose的版本
version: '3.8'

# 定义服务列表
services:
  # 服务名称
  myservice:
    # 构建Docker镜像的配置
    build:
      # Dockerfile所在的路径
      context: .
      # Dockerfile的名称
      dockerfile: Dockerfile

    # 构建的Docker镜像的名称和标签
    image: my-ubuntu:22.04

    # 运行的容器的名称
    container_name: my-ubuntu

    # 容器退出时的重启策略: no always on-failure unless-stopped
    restart: 'no'

    # 定义环境变量
    # environment:
    #   - ENV_VAR1=value1
    #   - ENV_VAR2=value2

    # 定义卷,映射主机和容器的目录
    volumes:
      - /home/lsc/torch2:/root

    # 映射容器和主机的端口
    # ports:
    #   - "9999:9999"

    # 定义网络
    # networks:
    #   - mynetwork

    # # 定义服务依赖
    # depends_on:
    #   - db
    #   - redis

  # 另一个服务
  # db:
  #   image: postgres:latest
  #   environment:
  #     - POSTGRES_USER=myuser
  #     - POSTGRES_PASSWORD=mypassword
  #   networks:
  #     - mynetwork

  # 另一个服务
  # redis:
  #   image: redis:latest
  #   networks:
  #     - mynetwork

# 定义网络列表
# networks:
#   mynetwork:

构建并运行服务

docker-compose up

up后添加-d的话,可以将服务在后台运行。

停止服务并删除容器

docker-compose down

常用指令

  • docker-compose build:只创建(或重新创建)服务,不运行服务。
  • docker-compose ps:查看正在运行的服务状态,添加-a的话可以查看所有服务状态。
  • docker-compose logs:查看服务日志。如果想查看指定服务的日志,可以在logs后面添加服务名称。
  • docker-compose pull:拉取服务依赖的Docker镜像。
  • docker-compose start:启动所有服务。后面可以跟指定的服务名称。
  • docker-compose stop:停止所有服务。后面可以跟指定的服务名称。
  • docker-compose rm:删除所有停止的服务。后面可以跟指定的服务名称。
  • docker-compose exec 服务名称 命令:在指定的运行的服务中执行命令。命令为bash的话会进入服务的容器。

Reference

chatgpt4

文章作者: KAWAKO
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KAWAKO
服务器 docker
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝