当前位置: 首页 > article >正文

使用docker file创建镜像(thirty-seven day)

回顾:根据镜像创建容器

docker -it --name c0 centos:latest /bin/bash

安装应用

ctrl+p+q

docker export -o centos.tar c0

docker import -m "山不像我走来,我便向山走去" centos.tar centos:httpd

docker commit c0 centos:v2

一、docker file应用

在Docker file中定义所需要执行的指令,使用 docker build创建镜像,过程中会按照dockerfile所定义的内容进行打开临时性容器,把docker file中命令全部执行完成,就得到了一个容器应用镜像,每一行命令都会出现容器,都会使用dockercommit进行提交一个临时性的镜像

注意执行的命令越多,镜像体积越大,所以需要优化镜像

1、Docker file关键字

1.FORM <image>                    指定基础镜像为该镜像的最后修改版本
2.FROM <image :tag>             指定基础镜像为该镜像的一个tag版本
3.MAINTAINER                        指定镜像创建者,企业内部不用指定,对外发布也可以不指定
3.RUN                                       运行命令,安装软件
4.CMD                                  设置container启动时进行的操作,如果容器镜像中有这个命名,启动容器时,不要手动让容器执行其他命令
5.ENTRYPORINT(入口点)        cmd每次只能执行一个指令,entrypoint可以多行执行
6.USER                                     设置容器进程的一些用户
7.EXPOSE                                暴露端口 指定容器需要映射到宿主机的端口
8.ENV                                       设置环境变量 -e
9.ADD                                       从宿主机src复制文件到容器的dest路径
10.volumn                                 指定挂载点

11.WROKDIR                            切换目限
12.ONBUILD                              在子镜像中执行指令

 2、使用docker file创建镜像

 (通过dockerfile创建⼀个在启动容器时,就可以启动httpd服务的镜像)

(1)步骤

①创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件
② 在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂ 件
③ 使⽤docker build创建镜像
④ 使⽤创建的镜像启动容器(验证)

 (2)具体操作

[root@Docker ~]# mkdir 001    
[root@Docker ~]# cd 001/

[root@Docker httpd0]# vim abc.sh

#!/bin/bash
rm -rf /run/*httpd*
exec /sbin/httpd -D FOREGROUND

[root@Docker httpd0]# echo "山不向我走来,我便向山走去" > index.html
[root@Docker httpd0]# ls
index.html  abc.sh

[root@Docker httpd0]# vim Dockerfile

FROM    centos:latest

MAINTAINER      "centos httpd server"

RUN     rm -rf /etc/yum.repos.d/*

RUN     curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

RUN     yum clean all && yum makecache

RUN     yum -y install epel-release

RUN     yum -y install httpd

ADD     abc.sh  /abc.sh

ADD     index.html /var/www/html/index.html

RUN     chmod -v -x /abc.sh

CMD     ["/bin/bash","/abc.sh"]

[root@Docker httpd0]# ls
Dockerfile  index.html  abc.sh

[root@Docker httpd0]# docker build -t centos:httpd .

[root@Docker httpd0]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       httpd0    4569c7510416   4 minutes ago   280MB
centos       httpd     8c4ea681706e   18 hours ago    280MB
centos       latest    5d0da3dc9764   2 years ago     231MB

[root@Docker httpd0]# ls /var/lib/docker/overlay2/
2r56za8uaixgxbbilh75pdtdd
2rpdeqlulp9b7hlx5f86hkvof
6be84eeb89f20e3a01ecb81e31d978dc64a50177463452476ccab40da29a4b30
995db6a0fd46ba18fca60ad04b3d2636f83cda26a9e5e007a1e2f798b0e7cc5e
backingFsBlockDev
eudiuxbdibdsww3fqjijbil3p
l
ofj3mwwdnfl3p44uazvjfd49e
thdnqu77gb3yxizfu5w3el6sa
uaz5woahcolqp9uxt9ttz5gcq
usr98w8jkm1b547i9pcw87wo0
v0i3autzvaq6sfwt68nomsl3r
wq36avrvxy43q2hzh6pxeql5q

[root@Docker httpd0]# docker run -d --name c0 centos:httpd
9fdf6eb1b178ef74d3ab2af48d5f45691fd2f66ef0c5bffddcaea607a179d00c
[root@Docker httpd0]# docker ps --all
CONTAINER ID   IMAGE          COMMAND               CREATED         STATUS         PORTS     NAMES
245646aad8d6   centos:httpd   "/bin/bash /abc.sh"   7 seconds ago  
Up 6 seconds             c0

[root@Docker 001]# curl 172.17.0.2
山不向我走来,我便向山走去

[root@Docker 001]# docker run -it -d -v /opt/:/var/www/html/ -p80 --name a1 centos:httpd

[root@Docker 001]# docker ps --all
CONTAINER ID   IMAGE          COMMAND               CREATED              STATUS              PORTS                                     NAMES
a3bba4a766fe   centos:httpd   "/bin/bash /abc.sh"   33 seconds ago       Up 32 seconds       0.0.0.0:
32768->80/tcp, :::32768->80/tcp   a1
245646aad8d6   centos:httpd   "/bin/bash /abc.sh"   About a minute ago   Up About a minute                                            c0

访问192.168.1.11:32768

练习:配置nginx应用镜像

二、创建私有仓库 

1、拉取registry

docker pull registry

2、创建挂载目录

mkdir /regist

3、启动容器,映射端口,挂载目录

docker run -d --name r2  -v /regist/:/var/lib/registry -p5000:5000 registry:latest

4、访问仓库

curl http://192.168.1.11:5000/v2/_catalog

5、配置pull和push(修改daemon.json)

vim /etc/docker/daemon.json

{
        "registry-mirrors": [
                "https://do.nark.eu.org",
                "https://dc.j8.work",
                "https://docker.m.daocloud.io",
                "https://dockerproxy.com",
                "https://docker.mirrors.ustc.edu.cn",
                "https://docker.nju.edu.cn"
        ],

        "hosts": [
                "tcp://0.0.0.0:2375",
                "unix:///var/run/docker.sock"
        ],
        
         "insecure-registries":[
                "http://192.168.1.11:5000"
        ]

}

6、重启docker服务

systemctl restart docker

7、启动registry容器

docker start r2

curl localhost:5000/v2/_catalog

8、打标签并且上传镜像 

docker tag centos:httpd 192.168.1.11:5000/centos:httpd

docker push 192.168.1.11:5000/centos:httpd

9、查看

curl localhost:5000/v2/_catalog


http://www.kler.cn/a/286173.html

相关文章:

  • 存储系统总结
  • MATLAB中save_system的用法
  • 【CSS】border-image 样式不生效 - 和谷歌浏览器版本有关系 - 谷歌 80 版本边框图片样式失效问题
  • 人该怎样活着呢?48
  • zdppy+vue3+onlyoffice文档管理系统实战 20240901 上课笔记 基于验证码登录功能基本完成
  • Excel 导入和导出--前后端整合
  • 【AI绘画教程】StableDiffusion真实系模型推荐,搭配ADetailer人脸修复插件,轻松生成真实故事大场景AI人像,让你的SD好用100倍!
  • 力扣9.1
  • 金风科技巴西风电装备制造基地正式投运
  • 大语言模型诞生、探索和爆发阶段
  • 借鉴腾讯系统架构从小到大的过程 - 如何做好一个系统设计?不限于(慧哥)慧知开源充电桩平台
  • uniapp引入最新版Animate.css及使用示例
  • 网络层 III(划分子网和构造超网)【★★★★★★】
  • ureport的坑,打不开报表模板文件
  • Mysql中count(*) over 用法讲解
  • 【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
  • 【C++】单元测试覆盖率工具lcov的使用
  • 基于springboot+vue+uniapp的物流管理系统小程序
  • wordpress安装完访问时提示“不安全”
  • JavaScript进阶指南之Event Loop