使用Dockerfile构建镜像,使用及封装

一、docker常用的简单命令

(1)查看目前的镜像

docker images

(2)查看目前的容器

docker container ls

(3)查看镜像,容器占用情况

docker system df

(4)进入容器内部

docker exec -it id /bin/bash

(5)停止容器

 docker stop id

注释:id表示CONTAINER ID,指的是运行中的容器。

镜像与容器的理解:镜像存在与磁盘中,类似于一个python文件。容器存在于内存中,类似于一个正在运行的python文件。

二、完完整整的使用Dockerfile构建镜像

(1)在准备好的目录下,vim Dockerfile,可以参考我的:

FROM hx_congestion:v1.4.2

ENV REFRESH_DATE 2019-12-01

USER root
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


COPY --chown=root:root ./ /home/project/

# 目录设置
RUN mkdir -p /data/
RUN chown root:root /data/ && chmod -R 777 /data/
RUN mkdir -p /model/
RUN chown root:root /model/ && chmod -R 777 /model/

# 容器启动命令
WORKDIR /home/project
RUN chmod +x run_sh.sh
ENTRYPOINT  ["/bin/bash","-c","/bin/bash run_sh.sh"]
USER root

(2)我们需要在这个目录下放需要执行的文件,并且再创建一个run_sh.sh文件,这个文件可以去执行我们需要的文件。比如说我们需要使用finetune.py文件,那就再sh中写入:

#!/bin/bash
cd /home/project
export CUDA_VISIBLE_DEVICES="1"
nohup uvicorn finetune:app --host 0.0.0.0 --port 5003  --workers 0 >imageLog.out &
/bin/bash

(3)使用这个文件,建立我们的镜像。

docker build -t finetune:v1 .

(3)查看构造的镜像,发现出现了一个新镜像

docker images

(4)使用我们的镜像构造容器

docker run --gpus all -p 8010:5003 --restart=always --user root -d  -it finetune:v1

(5)查看构造的容器,可以看见ID号

正在运行的:

docker container ls

 全部的容器:

docker ps -a

(6)进入容器,需要用到ID号

docker exec -it ID /bin/bash

(7)停止运行中的容器

docker stop ID

(8)退出正在使用的容器

exit

三、改造镜像

(1)首先运行镜像形成容器,容器会首先执行我们dockerfile中写到的run_sh.sh文件。

docker run --gpus all -p 8010:5003 --restart=always --user root -d  -it finetune:v1

(2)查看构造出的镜像

docker container ls

(3)进入镜像

docker exec -it ID /bin/bash

(4)改造镜像

就跟在Linux中,修改文件一模一样

(5)容器打包成镜像

docker commit ID finetune:v2

不过还是建议在构造镜像之前,就把文件修改好,省的后面麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值