镜像创建、镜像push
是什么
Dockerfile是用于构建docker镜像的文件
Dockerfile里包括了构建镜像所需的“指令”
Dockerfile有其特定的语法规则
基本结构
例如:在一台ubuntu 21.04上运行下面这个hello.py的Python程序
不用daocker步骤:
1、编写hello.py文件。
print("hello docker")
2、准备Python环境
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
3、运行hello.py
$ python3 hello.py
hello docker
使用Dockerfile构建镜像后就这样
FROM ubuntu:20.04
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
ADD hello.py /
CMD ["python3", "/hello.py"]
说明:
FROM:导入一个基础镜像
RUN:要运行的linx命令
ADD:添加文件到docker镜像的指定目录
CMD:使用该镜像创建容器的时候,要执行的命令。
构建镜像
将写好的hello.py文件和Dockerfile文件放在一起进入该目录。
构建镜像
docker image build -t 容器名称:版本 构建镜像存放路径
例如:
docker image build -t hello .
注意:如果不写版本号默认是latest。t:表示标签
例如,构建上面的py镜像:
docker image build -t i2cn/hello:1.0 .
构建镜像名称是hell,版本默认是latest,存放位置当前文件夹下。
注意:因为是根据一个image创建的,image的id是相同。
镜像提交到DockerHub
需要符合DockerHub命名规范。
根据现有image修改tag生成一个新image tag:
docker image tag 容器名称 新容器名称/名称:版本
docker image tag i2cn/hello:1.0 i2cn/hello:1.1.0
登录DockerHhub:
docker login
会提示输入用户名密码。
推送自定义镜像到DockerHub
docker image push 镜像名称:tag
注意:如果是要推送到自己的DockerHub一定要取一个自己账号开头的镜像名称。
例如推送上面自己构建的镜像:
docker image push i2cn/hello:1.0
打开Docker hub自己仓库,就可以看到push的镜像了。
测试拉去push的镜像
删除本地镜像:
docker image rm i2cn/hello:1.0
从新拉取推送到dockerhub的镜像
docker image pull i2cn/hello:1.0
执行镜像:
docker container run -it i2cn/hello:1.0
可以看到输出:hello docker
测试成功。
commit创建镜像
将现有容器的改变,commit成一个新的镜像。
例如:启动一个nginx容器,修改nginx的欢迎页面信息,然后重新commit成一个新的镜像,如果要使用改变后的nginx容器,则可以直接执行commiit后的镜像即可。
执行nginx镜像,运行nginx容器,查看nginx首页。
docker container run -d -p 80:80 nginx
进入nginx修改首页信息
docker exec -it 8872c sh
进入nginx容器首页文件路径
cd /usr/share/nginx/html
修改首页信息
echo "<h1>hello word </h1>" > index.html
用echo命令,将“
hello word
”写入index.html查看首页信息
重点:
使用commit命令,将修改后的nginx容器,commit成一个镜像。
停止nginx容器运行
docker container stop 8872c
commit容器成一个新镜像:
docker container commit 8872 i2cn/nginx:1.0.0
查看通过commit新生成的镜像:
创建容器,commit创建镜像
1、创建ubuntu容器
docker container run -it ubuntu:21.04 sh
2、在ubuntu容器里面安装Python环境
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
3、创建hello.py文件,打印hello docker
echo "print('hello docker')" > /hello.py
4、推出ubuntu容器,通过commit打包ubuntu容器。
docker container commit ubuntu i2cn/pydemo:1.0
5、通过打包后的pydemo:1.0镜像运行容器。
docker container run i2cn/pydemo:1.0 python3 /hello.py
这种方法和离线导入导出不怎么使用。
查看镜像分层
docker image history 镜像名称
例如查看nginx分层信息
docker image history nginx
评论 (0)