Docker基础 1、Docer基础概念 镜像(Images):就是静态的文件系统,里面有源代码、依赖的库、配置文件等,类似于github下载的代码包,但是是一个完整的系统,可以直接运行。可以用docker images查看系统中的镜像。容器(Container):容器是运行中的镜像,他的实质是进程,通过docker ps可以查看运行中的容器。仓库(Repository):首先我们需要登陆一个服务器Docker Registry,然后每个Registry上可以包含多个Repository,每个Repository下可以多个Tag相当于不同的版本,每个Tag对应一个镜像Image 2、Docker基本操作
最基本的操作是login、pull、push,类似于github,首先安装了docker之后,我们登陆Docker服务器:
docker login [Registry名称],然后输入用户名和登陆密码登陆。docker pull [镜像名]:[镜像Tag]:类似于git clone下载对应镜像。docker push,类似于github的push,利用docker images可以查看镜像对应的仓库名和对应的Tag好,利用docker push [Repository]:[Tag]更新远程仓库的镜像。 3、Dockerfile创建镜像
可以通过docker commit 和 Dockerfile创建镜像,官方推荐使用Dockerfile创建,可以直观地看到创建过程。
基础指令简介:
ARG:指定临时变量,镜像创建完成之后会消失FROM:指定在一个镜像之上构建WORKDIR:指定工作目录RUN:执行一次生成一层镜像CMD:设置启动后默认执行的命令和参数,一般用于指定参数ENTRYPOINT:设置启动后默认执行的命令和参数,一般作为人口COPY:拷贝本地文件到docker,远程用curl或者wgetADD:本地文件复制到docker去,自动解压缩 4、实战Docker天池入门赛
第一步:安装docker
根据电脑版本安装docker
第一步:开通阿里云容器镜像服务
看手把手教程的第二步,非常详细:
https://tianchi.aliyun.com/competition/entrance/231759/tab/174
第三 步:准备本地文件
四个,Dockerfile(构造镜像)、hello_world.py(执行代码)、result.json(空白用于存放结果)、run.sh(容器运行入口)
1、Dockerfile:按照手把手教程配置即可
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3ADD . /WORKDIR /CMD [“sh”, “run.sh”]
2、hello_world.py:执行代码
import jsonimport heapqclass TopKHeap(object): def __init__(self,k): self.data=[] self.k=k def push(self,num): if len(self.data)<self.k: heapq.heappush(self.data,num) else: top_min=self.data[0] if num>top_min: heapq.heapreplace(self.data,num) def topk(self): return list(reversed([heapq.heappop(self.data) for i in range(self.k)]))def get_result(): num_sum = 0 topKHeap_10 = TopKHeap(10) with open(“/tcdata/num_list.csv”, “rb”) as f: line = f.readline() while line: num = int(line) num_sum += num topKHeap_10.push(num) line = f.readline() return num_sum, topKHeap_10.topk()num_sum, top_10_list = get_result()data = { “Q1″:”Hello world”, “Q2”:num_sum, “Q3”:top_10_list}# data_json = json.dumps(data)with open(“./result.json”, “w”) as f: json.dump(data, f)
3、run.sh
python hello_world.py
本地调试程序,在绝对路径 /tcdata/ vps云服务器 创建一个num_list.csv文件,里面是n个数字,python hello_world.py查看result.json的输出
第四部:上传镜像
上传到第二步的服务中
1、登陆阿里云Registry
$ sudo docker login –username=[用户名] registry.cn-shanghai.aliyuncs.com
2、拉取镜像
$ sudo docker pull registry.cn-shanghai.aliyuncs.com/[镜像名]:[镜像版本号]
3、利用Dockerfile创建镜像
进入到Dockerfile的目录下
$ sudo docker build -t registry.cn-shenzhen.aliyuncs.com/[镜像名]:[镜像版本号] .
4、上传到镜像服务器
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/[镜像名]:[镜像版本号] 35293696