## Docker 包括三个基本概念
镜像(Image):Docker 镜像是用于创建 Docker 容器的模板。
容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体,镜像(Image)和容器(C ontainer)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像
## docker常用指令:
### 镜像构建
在安装docker 的电脑内创建文件夹,放入依赖的资源,用管理员权限运行命令行跳转到该文件夹内。创建Dockerfile 文件,Dockerfile 是一个文本文件,其内包含了一条条的指令,用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。构建镜像指令如下:
docker build -t ImageName:TagName dir
-t − 给镜像加一个Tag
ImageName − 给镜像起的名称
TagName − 给镜像的Tag名
Dir − Dockerfile所在目录,可用符号“.”表示当前目录,即Dockerfile所在目录
案例:
文件目录如下:
test_python目录下包含:Dockerfile文件、req文件夹(所有的依赖资源)
req文件夹:python安装包(该镜像为一个简单的用于执行python3.8版本脚本的镜像,所以依赖的资源比较少,实际项目根据自己需要的资源进行存放。)
docker build使用参考:用管理员权限运行命令行跳转到该test_Python文件夹内,创建一个名为test_docker的镜像,该镜像用于执行python脚本(python版本:python-3.8.2),指令如下:
docker build -t test_docker:v1 -f .\Dockerfile_python .
Dockerfile_python文件的设定:(python-3.8.2运行容器的创建)
# 设置基础镜像(windows镜像,可从官网获取)
FROM mcr.microsoft.com/windows/servercore:1809-KB4464455-amd64#将req/python-3.8.2rc1-amd64.exe安装文件拷贝到c盘
COPY req/python-3.8.2rc1-amd64.exe C:/
RUN start /wait C:\python-3.8.2rc1-amd64.exe /quiet TargetDir=C:\Python38 InstallAllUsers=1 PrependPath=1
RUN powershell -Command \
Remove-Item c:\python-3.8.2rc1-amd64.exe -Force# 安装playwright、xlrd、docx
RUN pip install playwright \&& pip3 install xlrd \
&& pip install docx \
&& pip install python-docx
# 安装playwright自带的浏览器。
RUN playwright installCMD [ "cmd" ]
### 启动容器并映射文件夹
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:
-i表示交互式的,表示[cmd]是一个有用户输入的程序,比如/bin/bash和python等
-t 产生一个终端。
-i与-t必须一起使用,OPTIONS拥有很多属性,具体内容可百度进行了解
IMAGE:创建的容器名称
COMMAND:命令(文件映射关系、使用的镜像等)
案例:
运行镜像test_docker创建的容器test_docker_run,并将d:/Temp映射到C盘:(容器名和镜像名可以不同)
docker run -it --name test_docker_run -v d:/Temp:C:/Temp test_docker:v1 cmd
注:windows系统默认内存大小比较小,如果容器使用中报“out of memory”错误,在启动容器时指定内存大小,方式如下:(指定内存大小为4g)
docker run -it --name test_docker_run -m 4g -v d:/Temp:C:/Temp test_docker:v1 cmd
### 利用容器执行脚本
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d,以后台方式执行命令;
-e,设置环境变量
-i,交互模式
-t,设置TTY
-u,用户名或UID
CONTAINER:容器名称
COMMAND:需要执行的脚本
案例:
使用容器test_docker_run运行C:\Temp\test路径下的test.py脚本,该脚本用于处理一个指定文件,故需要传入文件所在路径C:\Temp\test\TestCase做为输入参数
docker exec -it test_docker_run python C:\Temp\test\test.py C:\Temp\test\TestCase
### 查看已安装镜像
docker images
### 查看正在运行的容器信息
docker ps
### 查看所有的容器信息
docker ps -a
### 运行容器的停止,启动,重启,进入容器
docker stop “CONTAINER ID”
docker start “CONTAINER ID”
docker restart “CONTAINER ID”
docker exec -it “CONTAINER ID” CMD
### 退出docker容器
exit
### 删除镜像及其容器
1.查看镜像和容器信息
docker images
docker ps -a
2.查看容器状态,若为运行状态,停止容器;若为停止状态,忽略此操作
docker stop “CONTAINER ID”
3.删除容器
docker rm “CONTAINER ID”
4.删除镜像
docker rmi “IMAGE ID”
注:通过指令docker ps -a查询容器的运行状态、“CONTAINER ID”、通过docker images指令查询镜像的“IMAGE ID”