【KAWAKO】利用Dockerfile和docker-compose来构建容器和服务
对于深度学习的训练来说,不需要把容器当做一个服务,而是当做一个虚拟机或虚拟环境,这时只需要用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
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
KAWAKO!
喜欢就支持一下吧
打赏
微信
支付宝