初学者的Dockerfile和私有仓库创建

Dockerfile和私有仓库创建

Dockerfile 介绍

Dockerfile 是由一组指令组成的文件

Dockerfile 结构四部分

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令

Dockerfile 每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释

Dockerfile 操作指令

指令含义
FROM镜像指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER名字说明新镜像的维护人信息
RUN命令在所基于的镜像上执行命令,并提交到新的镜像中
CMD[“要运行的程序”,“参数1,参数2”]指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后一条被执行
EXPOSE端口号指定新镜像加载到Docker时要开始的端口
ENV环境变量 变量值设置一个环境变量的值,会被后面的RUN使用
ADD源文件/目录 目标文件/目录将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL
COPY 源文件/目录 目标文件/目录将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中
VOLUME[“目录”]在容器中创建一个挂载点
USER 用户名/UID指定运行容器时的用户
WORKDIR 路径为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD 命令指定所生成的镜像作为一个基础镜像时所要运行的命令
HEALTHCHECK健康检查

我对Dockerfile的理解是,创建一个有内容的镜像文件,创建完成后,将镜像添加到容器中,直接运行即可

-----------------------使用Dockerfile创建镜像---------------------

mkdir apache

cd apache

vim Dockerfile

#基于的基础镜像

FROM centos:7

#维护镜像的用户信息

MAINTAINER The porject <cloud-ops@centos.org>

#镜像操作指令安装apache软件

RUN yum -y update
RUN yum -y install httpd

#开启80端口(内部)

EXPOSE 80

#复制网站首页文件

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

#将执行脚本复制到镜像中

ADD run.sh /run.sh
RUN chmod 755 /run.sh

#启动容器时执行脚本

CMD ["/run.sh"]

接下来,我们要创建run.sh和index.html

vim run.sh

#!/bin/bash

rm -rf /run/httpd/*

exec /usr/sbin/apachectl -D FOREGROUND

----------创建网页----------------

echo "web test" > index.html
//生成镜像

docker build -t httpd:centos .

//新镜像运行容器

docker run -d -p 8080:80 httpd:centos

//测试

http://192.168.209.139:8080


基于已有的镜像容器进行创建

//创建容器

docker create -it jasonlix/docker-cobbler /bin/bash

docker commit -m “new” -a “docke” ID号(镜像) docke:test

docker images | grep daoke

------------基于本地模板创建-------------

weget http://download,openvz.org/template/precreated/debin-7.0-x86-minimal.tar.gz

cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new

docker images | grep new

-------------私有仓库建立--------------------

docker pull registry

vim /etc/docker/daemon.json

{
  "insecure-registries": ["192.168.209.139:5000(外部端口)"],   //添加
  "registry-mirrors": ["https://*********.mirror.aliyuncs.com"]
}

systemctl restart docker

docker create -it registry /bin//bash

docker start ID号(-a 查出来的容器id号)

让容器运行起来

docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry


更改标记为192.168.209.139:5000/nginx

docker tag nginx:latest 192.168.209.139:5000/nginx

上传

docker push 192.168.209.139:5000/nginx

获取私有仓库列表

curl -XGET http://192.168.209.139:5000/v2/_catalog

上传成功,显示如下

{“repositories":[“nginx”]}

测试,从私有仓库下载nginx

docker pull 192.168.209.139:5000/nginx/latest


随机映射端口

docker run -d -P 192.168.209.139:5000/nginx

随机端口从32768开始

----------------容器互联-----------------

docker run -itd -P --name web11 centos:7 /bin/bash

打开一个新的客户端

docker run -itd -P --name web22 --link web11:web11(这边可以是一个别名) centos:7 /bin/bash

数据管理操作

  • 方便查看容器内产生的数据
  • 多容器间实现数据共享

两种管理方式

  • 数据卷,实现容器和宿主机之间的数据共享
  • 数据卷容器,实现容器和容器之间的数据共享

----------------------------Docker数据卷-----------------------------

docker pull centos

//宿主机目录/var/www 挂载容器中的/data1

docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash

//进入容器

cd /data1/

touch test123

//返回宿主机进行查看

ls /var/www/

------------------------数据卷容器-----------------------------

//数据卷容器

docker run --name web100 -v /data1 -v /data2 -it centos:7 /bin/bash

//打开一个新的客户端,新容器挂载数据卷容器web100

docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值