Dockerfile+私有仓库

使用Dockerfile创建应用镜像

在Docker file中定义所需要执⾏的指令,使⽤ docker build创建镜 像,过程中会按照dockerfile所定义的内容进⾏打开临时性容器,把docker file中命令全部执⾏完成,就得到了⼀个容器应⽤镜像,每⼀⾏命令都会出现容器,都会使⽤docker commit进⾏提交⼀个临时性的镜像
Docker file关键字
1.FORM 指定基础镜像为该镜像的最后修改版本
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在⼦镜像中执⾏指令

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

步骤:
1.创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件
2.在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂件
3.使⽤docker build创建镜像
4.使⽤创建的镜像启动容器(验证)

[root@docker ~]# mkdir httpd0
[root@docker ~]# cd httpd0

编辑启动脚本:启动http服务 
[root@docker httpd0]# vim abc.sh

#!/bin/bash
rm -rf /run/httpd/*
exec /sbin/httpd -D FOREGROUND
[root@docker httpd0]# ls
abc.sh

编辑index.html文件:
[root@docker httpd0]# echo "httpd server is running" > index.html
[root@docker httpd0]# ls
abc.sh  index.html

编辑Dockerfile

[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]# docker build -t  centos:httpd .

查看镜像

创建容器测试

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

查看IP地址

[root@docker httpd0]#docker inspect c0

[root@docker httpd0]#curl 172.17.0.3
httpd server is running

通过Dockerfile创建yum镜像

在上述的配置(通过Dockerfile创建httpd镜像)中进行修改:

[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

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

[root@docker httpd0]# docker run -it --name c1 centos:yum /bin/bash 
crtl+p+q
[root@docker httpd0]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                       NAMES
e36a888b2a24   centos:yum        "/bin/bash"               29 seconds ago   Up 28 seconds                                               c1
e50856f7eee2   centos:httpd      "/bin/bash /abc.sh"       23 minutes ago   Up 23 minutes                                               c0

通过Dockerfile创建nginx镜像

利用已经存在的yum镜像来创建nginx镜像

[root@docker ~]#mkdir  002

[root@docker ~]#cd 002

[root@docker 002]# vim Dockerfile 

FROM    centos:yum
MAINTAINER      和平
RUN     yum -y install epel-release
RUN     yum -y install nginx
RUN     echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE  80
CMD     /usr/sbin/nginx


[root@docker 002]#docker build -t centos:nginx .

[root@docker 002]# docker run -d --name c2 centos:nginx
f18c2b57f40f442726b1837d4c28f96dcb17c4c812ecfbac532d4ae2692fc98b
[root@docker 002]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                       NAMES
f18c2b57f40f   centos:nginx      "/bin/sh -c /usr/sbi…"   12 seconds ago   Up 11 seconds   80/tcp                                      c2

 

私有仓库

1.安装仓库镜像

[root@docker ~]# docker pull registry
2.创建容器,映射端⼝,挂载⽂件
# 创建挂载目录
[root@docker ~]# mkdir /regist
 
# 查看容器--全部删掉
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
 
# 创建容器,映射端⼝,挂载⽂件
[root@docker ~]# docker run -d --name r1 -v /regist/:/var/lib/registry -p5000:5000 registry:latest
4cd2b4d2c49fb4bdc6cf64aacea6c72a38f2c0eb3beccc6ed6845447b081a06f
 
# 查看创建的容器
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                       NAMES
4cd2b4d2c49f   registry:latest   "/entrypoint.sh /etc…"   3 seconds ago   Up 2 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1
 
# 访问目录页
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

3.浏览器访问:192.168.118.55:5000/v2/_catalog

4.配置pull和push,修改daemon.json文件

[root@docker ~]# 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.118.55:5000"
 
        ]
}

5.修改了daemon.json文件,重启服务

[root@docker ~]# systemctl restart docker.service

6.启动registry容器

# 查看容器
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS                     PORTS     NAMES
4cd2b4d2c49f   registry:latest   "/entrypoint.sh /etc…"   10 minutes ago   Exited (2) 2 minutes ago             r1
 
# 启动r1容器
[root@docker ~]# docker start r1
r1
 
# 访问⽬录⻚
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

7.给yum镜像打标签

# 为要上传的镜像添加标记
[root@docker ~]# docker tag centos:yum 192.168.118.55:5000/centos:yum
 
# 查看打标签的镜像
[root@docker ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED          SIZE
192.168.118.50:5000/centos   yum       ee9375ac855c   2 hours ago      272MB
centos                     yum       ee9375ac855c   2 hours ago      272MB
registry                   latest    cfb4d9904335   10 months ago    25.4MB

8.将打标签的镜像上传

[root@docker ~]# docker push 192.168.118.55:5000/centos:yum

9.在主机上进行访问

[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":["centos"]}

10.浏览器访问:192.168.118.55:5000/v2/_catalog

11.查看regist文件

[root@docker ~]# ls /regist/
docker
[root@docker ~]# cd /regist/docker/
[root@docker docker]# ls
registry
[root@docker docker]# cd registry/
[root@docker registry]# ls
v2
[root@docker registry]# cd v2
[root@docker v2]# ls
blobs  repositories
[root@docker v2]# cd repositories/
[root@docker repositories]# ls
centos
[root@docker repositories]# cd centos/
[root@docker centos]# ls
_layers  _manifests  _uploads
[root@docker centos]# cd _layers/
[root@docker _layers]# ls
sha256
[root@docker _layers]# cd sha256/
[root@docker sha256]# ls
30902bbca4a1d948703fd88d834ddf4dc8db69bb7e787ff18a762b6b4761fe37
46aacd2dd64664a37b01ee3a9f37561ed9b34c5af6661b880ee07a15d5fe8fd6
5a3d9ba04912ac6b1353410a0f18cc206b4920888e3187443abacefe3c9086ab
a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1
ca847d29e1079f24cfc92b68cf37d5866060814df67cbdcd83edb16f1dc4fe54
ee9375ac855c3a1f8ec3eb03cee9317c3127e4be47cb3d6f519d9e6921a6a044

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值