一、安装docker并开通镜像云见下方链接:
Docker desktop Home - Docker
【入门】Docker练习场常见问题-天池大赛-阿里云天池 (aliyun.com)
二、创建docker python基础镜像见下方链接:
创建自己的Docker基础镜像 - Cocowool - 博客园 (cnblogs.com)
Docker Dockerfile | 菜鸟教程 (runoob.com)
三、从现有基础镜像构建镜像(仅包含服务器命令创建方法)
以下可以 Docker入门练习场 为例:
1、拉取基础镜像文件:
docker pull image:version
# docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
2、准备所需文件:
创建文件夹,存放创建镜像所需文件。
必要文件:Dockerfile(固定名称),内容需包含源基础镜像名称和镜像内部路径设置,CMD为可选项。
# Base Images
# Example: Construct from tianchi base image
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
# Add current workdir fies to docker root path
ADD . /
# Determine default workdir as root path (you need to put all files in the fold)
WORKDIR /
# The command will be execute when container running
CMD ["bash", "run.sh"]
3、创建镜像指令:
docker build -t <镜像名>:<版本号> .
# docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
注:命令最后的 <.> 是构建镜像的源路径,不可省略
四、运行镜像命令:
(1)CPU版镜像:
docker run <参数> <镜像名>:<版本号> <bash命令>
# 交互式运行镜像:docker run -it <镜像名>:<版本号> <bash命令>
# 给容器挂载存储卷,挂载到容器的某个目录:docker run -v <容器外文件路径>:<容器中挂载部位路径> <镜像名>:<版本号> <bash命令>
(2)GPU版镜像:
nvidia-docker run <镜像名>:<版本号> <bash命令>
docker run命令参数可见链接:docker run 命令参数 - Isolates - 博客园 (cnblogs.com)或使用 docker run --help
五、docker镜像版本更新:
在运行docker镜像,构造容器后,镜像文件不会自动发生变更,如果需要根据容器运行结果更新或新建镜像文件,可以使用Dockerfile和docker build命令,但是重新构建镜像速度会比较慢,推荐在现有镜像基础上使用docker commit从容器中创建一个新镜像。
从容器新建镜像命令:
docker commit -m "<message>" -a "<creator>" <container ID> <镜像名>:<版本号>
注:当 <镜像名>:<版本号> 与要保存的容器所启动的镜像相同时,则覆盖原镜像进行更新,如果当前镜像库不存在,则创建新镜像。
六、宿主机与镜像(指定容器)间文件传输:
(1)从容器向宿主机拷贝文件:
docker cp <container ID>:<待拷贝文件在容器中的路径> <宿主机保存文件路径>
(2)从宿主机向容器拷贝文件:
docker cp <宿主机待拷贝文件路径> <container ID>:<容器保存文件路径>
注:在文件传输过程中,始终是容器与宿主机之间进行文件传输,对生成容器的源镜像不产生影响,因此在传输文件后,如需要根据变更的容器更新镜像,请使用docker commit 指令。
docker volume相关docker volume - 简书 (jianshu.com)
七、向镜像添加TAG与删除TAG:
(1)向镜像添加TAG:
docker tag <image ID> <镜像名>:<版本号>
(2)删除镜像TAG:
docker rmi -f <镜像名>:<版本号>
注:镜像文件是只读文件,添加与删除TAG不影响镜像文件本身,仅相当于粘贴与丢弃标签,对存储的镜像内容没有实质性的改变,当某一image ID镜像所有TAG均被删除时,此镜像文件处于悬空状态。**
八、向云端推送镜像:
(1)登录云端服务器:
docker login --username=<用户名> <docker仓库地址>
(2)推送命令:
docker push <镜像名>:<版本号>
注:此时镜像名必须与云端docker仓库名相一致,因此,docker push常与docker tag配合使用。**
九、查看当前路径下docker镜像与容器列表命令:
(1)查看所有镜像:
docker images
(2)查看所有容器(运行中与已停止):
docker ps -a
十、清理docker磁盘占用:
参考链接:Docker磁盘占用与清理问题 - 简书 (jianshu.com)