dockerfile、私有仓库创建

2024-08-29 03:52

本文主要是介绍dockerfile、私有仓库创建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

1、步骤

1.创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件
 
2.在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂件
 
3.使⽤docker build创建镜像

 

4.使⽤创建的镜像启动容器(验证)

2.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镜像

# 停止docker服务
[root@docker ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
 
# 删除docker文件
[root@docker ~]# rm -rf /var/lib/docker/*
 
# 启动docker服务
[root@docker ~]# systemctl start docker
 
# 拉取centos镜像
[root@docker ~]#  docker pull centos

 
# 创建001目录
[root@docker ~]# mkdir 001
 
# 进到001目录下
[root@docker ~]# cd 001/
 
# 编辑启动脚本
[root@docker 001]# vim abc.sh
 
# !/bin/bash
 
rm -rf /run/httpd/*
 
exec /sbin/httpd -D FOREGROUND
 
# 查看创建的脚本
[root@docker 001]# ls
abc.sh
 
# 编辑index.html文件
[root@docker 001]# echo "httpd server is running" > index.html
[root@docker 001]# ls
abc.sh  index.html
 
# 编辑Dockerfile文件
[root@docker 001]# 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 001]# pwd
/root/httpd0
 
# 查看创建的文件
[root@docker 001]# ls
abc.sh  Dockerfile  index.html
 
# 创建镜像
[root@docker 001]# docker build -t centos:httpd .
 
# 查看镜像
[root@docker 001]# docker images
 
# 查看docker文件的变化
[root@docker 001]# ls /var/lib/docker/overlay2/

 
# 创建容器测试
[root@docker 001]# docker run -d --name c0 centos:httpd 
d398df1d2b235ad09068fa3b84b9ad2e0c31c03815982a92882609055a04d9ae
 
# 查看容器
[root@docker 001]# docker ps --all
 
# 访问测试
[root@docker 001]# curl 172.17.0.2
httpd server is running
 
# 容器挂载
[root@docker 001]# docker run -d -v /opt/:/var/www/html/ -p80 --name c1 centos:httpd
cb8c1626ce9a6ea8986c40f0efa4f657192ff7babf9aecd4acbfcc115f7e5d83
[root@docker 001]# ls /opt/
assets  containerd  favicon.ico  index.html
 
# 写测试内容
[root@docker 001]# echo "adsfadfafwqrdfqdsafdgdfsgda" > /opt/index.html
 
# 访问测试
[root@docker 001]# curl 172.17.0.2
adsfadfafwqrdfqdsafdgdfsgda
 
# 查看容器
[root@docker 001]# docker ps -all

#浏览器访问

使用Dockerfile创建yum镜像

# 修改Dockerfile文件
[root@docker 001]# 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 001]# docker build -t centos:yum .
 
# 查看镜像
[root@docker 001]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       httpd     ebbf109944f1   5 minutes ago   338MB
centos       yum       ee9375ac855c   5 minutes ago   272MB
centos       latest    5d0da3dc9764   2 years ago     231MB
 
# 查看docker磁盘使用情况
[root@docker 002]# du -sh /var/lib/docker/overlay2/
1.1G    /var/lib/docker/overlay2/

使用Dockerfile创建nginx镜像

# 创建目录
[root@docker ~]# mkdir 002
 
# 进到002目录下
[root@docker ~]# cd 002/
 
# 编辑Dockerfile文件
[root@docker 002]# vim Dockerfile
 
# 这里使用之前创建的yum镜像
FROM    centos:yum 
 
MAINTAINER      维护世界和平
 
RUN     yum -y install nginx
 
RUN     yum -y install epel-release
 
RUN     echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE  80
 
CMD     /usr/sbin/nginx
 
# 运行Dockerfile文件-创建nginx镜像
[root@docker 002]# docker build -t centos:nginx .
 
# 查看镜像
[root@docker 002]# docker images

# 使用nginx镜像创建容器c1
[root@docker 002]# docker run -d --name nc centos:nginx 
34bf6e6f1ecfcb0e1f717385a3553fe058bab65caa4603280951d98976efebe6
 
# 查看创建的容器
[root@docker 002]# docker ps --all

二、私有仓库

1.安装registry

# 查看安装的镜像
[root@docker ~]# docker images

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
 
# 查看创建的容器
[root@docker ~]# docker ps --all
 
# 访问目录页
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

3.浏览器访问

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.2.30:5000"
 
        ]
}

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

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

6.启动registry容器

# 查看容器
[root@docker ~]# docker ps --all
 
# 启动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.2.30:5000/centos:yum
 
# 查看打标签的镜像
[root@docker ~]# docker images

8.将打标签的镜像上传到registry上

[root@docker ~]# docker push 192.168.2.30:5000/centos:yum
The push refers to repository [192.168.2.30:5000/centos]
8c519ad003b5: Pushed 
acbca50d3a83: Pushed 
75cdf155cf76: Pushed 
07d4b334a739: Pushed 
74ddd0ec08fa: Pushed 
yum: digest: sha256:fa3b19efa5dd7e95f2ea17a3d3ffd2b22ffedc3ddef9af6a69e60239db568a6c size: 1366

9、在主机上进行访问

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

10.浏览器访问

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

这篇关于dockerfile、私有仓库创建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116768

相关文章

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所