docker是近两年几乎所有互联网开发者都会直接或者间接接触的东西。加上近期Kubernetes集群的出现,使得这个技术更方便的能够给我们带来帮助。近期serverless概念很火,基于这个原因我打算持续学习容器相关技术。本片会以一个初学者的视角,提供demo与一些常用指令,帮助你感受docker。
安装dockerhub
可以通过 https://hub.docker.com 去下载docker安装包,下载比较慢的话,建议通过迅雷等加速下载。完成注册,打开对应的docker程序即可。
打包docker
结果先行,整体文件目录应该如下
1 | $ ls |
下面展示每个文件的内容
app.py
1 | from flask import Flask |
requirements.txt
1 | Flask |
Dockerfile
1 | # 使用官方提供的 Python 开发镜像作为基础镜像 |
下面就可以build这个镜像了
1 | $ docker build -t helloworld . |
常用指令
查看本次存放的docker镜像内容。
1
2
3
4$ docker image ls
REPOSITORY TAG IMAGE ID
helloworld latest 653287cdf998启动容器
1
$ docker run -p 4000:80 helloworld
将本地的4000端口映射到容器的80端口。
给容器打tag
1
$ docker tag helloworld YOUR_DOCKERHUB_NAME/helloworld:v1
此处需要命名成你的
docker_hub
的名称。比如说我的账号t967012342009
1
2$ docker tag helloworld t967012342009/helloworld:v1
$ docker push t967012342009/helloworld:v1上传docker
1
$ docker push t967012342009/helloworld:v1
查看当前docker进程
1
2
3$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a84fe34ced0c helloworld "python app.py" 17 minutes ago Up 17 minutes 0.0.0.0:4000->80/tcp nice_spence修改内容后提交镜像
1
2
3
4
5
6
7$ docker exec -it a84fe34ced0c /bin/sh
# 在容器内部新建了一个文件
root@4ddf4638572d:/app# touch test.txt
root@4ddf4638572d:/app# exit
# 将这个新建的文件提交到镜像中保存
$ docker commit a84fe34ced0c t967012342009/helloworld:v2删除某个tag
1
$ docker rmi zhaoleipeng/helloworld:v1