docker4

news/2024/9/14 9:32:02 标签: linux

​1、根据镜像创建容器
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 001]# vim abc.sh        启动httpd服务

#!/bin/bash
rm -rf /run/httpd/*

exec /sbin/httpd -D FROMGROUND

[root@docker 001]# echo "hfewjjdfh" >  index.html
[root@docker 001]# ls
abc.sh  index.html

[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]# docker  build -t  centos:httpd  .        .表示在当前目录

[root@Docker httpd0]# docker run -d --name c0 centos:httpd
9fdf6eb1b178ef74d3ab2af48d5f45691fd2f66ef0c5bffddcaea607a179d00c
[root@Docker 001]# 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
abcdefg

[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.8.81:32768

3、nginx镜像制作

[root@docker ~]# mkdir 002
[root@docker ~]# cd 002
[root@docker 002]# vim Dockerfile
FROM    centos:httpd

MAINTAINER    维护世界和平

RUN    yum -y install epel-release

RUN    yum -y install nginx

RUN    echo "daemon" >> /etc/nginx/nginx.conf

EXPOSE    80

CMD    /usr/sbin/nginx

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

二、私有仓库

在企业中分享项目

1.拉取registry镜像

[root@docker 002]# docker pull registry 
[root@docker 002]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
registry     latest    cfb4d9904335   10 months ago       25.4MB

2.创建挂载目录

[root@docker ~]# mkdir /regist

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

[root@docker ~]# docker run -d --name r1 -v /regist/:/var/lib/registry -p5000:5000 registry:latest
fde958f5cbc843106ba19246c1a4635bc991d6caa2f1e1331f05770aecc52770
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS        PORTS                                       NAMES
fde958f5cbc8   registry:latest   "/entrypoint.sh /etc…"   2 seconds ago   Up 1 second   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1

4.访问仓库

[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}                        还未部署,为空

5.搭建仓库 配置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"
        ],
        "insecure-registries":[
                "http://192.168.2.81:5000"
        ]
}

6.修改了配置文件,重启 docker服务

[root@docker ~]# systemctl restart docker.service        重启服务

7.启动registry容器

[root@docker ~]# docker start r1
r1
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS         PORTS                                       NAMES
fde958f5cbc8   registry:latest   "/entrypoint.sh /etc…"   15 minutes ago   Up 6 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

8.使用镜像做仓库

[root@docker ~]# docker tag centos:httpd 192.168.2.81:5000/centos:yum        打标记
[root@docker ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED          SIZE
centos                     nginx     26c8eca7afe5   42 minutes ago   442MB
192.168.2.81:5000/centos   yum       3eb05bb8315e   2 hours ago      338MB
centos                     httpd     3eb05bb8315e   2 hours ago      338MB
registry                   latest    cfb4d9904335   10 months ago    25.4MB
centos                     latest    5d0da3dc9764   2 years ago      231MB
[root@docker ~]# docker push 192.168.2.81:5000/centos:yum        拉取做仓库
The push refers to repository [192.168.2.81:5000/centos]
e42b8201d9a7: Pushed 
5a8661cbc551: Pushed 
944d98964116: Pushed 
07dc800f30a1: Pushed 
0f248ebca1b2: Pushed 
2715b9018a16: Pushed 
21d394e0a216: Pushed 
5faa9ad0053e: Pushed 
74ddd0ec08fa: Pushed 
yum: digest: sha256:53cd53a4dcd38217e7aa0f9f9bc33a15089fbcc6fb7800403cd7f3743e384733 size: 2199
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":["centos"]}


http://www.niftyadmin.cn/n/5627407.html

相关文章

SpringBoot项目目录介绍(SpringBoot学2)

1、主程序的入口 2、springboot的核心配置文件 修改 tomcat端口号 &#xff1a; server.port接端口号&#xff08;例&#xff1a;8081&#xff09; 然后运行就更改了端口号 同级目录下创建banner.txt文件 &#xff0c;在banner网址里面可以编辑我们想要的文本Spring Boot ban…

springboot嵌入式数据库实践-H2内嵌数据库(文件、内存)

本文章记录笔者的嵌入式数据库简单实现&#xff0c; 记录简要的配置过程。自用文章&#xff0c;仅作参考。 目录 本文章记录笔者的嵌入式数据库简单实现&#xff0c; 记录简要的配置过程。自用文章&#xff0c;仅作参考。 嵌入式数据库 -------------------------------具…

淘宝商品详情API返回值中的商品材质与成分

淘宝商品详情API返回值中关于商品材质与成分的信息&#xff0c;通常作为商品属性的一部分进行返回。这些信息对于消费者了解商品的质量、适用场景以及做出购买决策至关重要。以下是对淘宝商品详情API返回值中商品材质与成分的详细解析&#xff1a; 一、商品材质与成分的表示方…

C语言从头学53——字符集

在使用VS编程时&#xff0c;在项目设置中有一个关于字符集的选项。一是Unicode字符集&#xff08;VS默认的字符集&#xff09;&#xff0c;二是多字节字符集。本文围绕这两个字符集做一简单介绍。 一、先说一下多字节字符集 最早的字符集是ANSI的ASCII字符集&#xff0c…

Python 从入门到实战2(实例1:计算圆的面积)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 看视频太慢&#xff0c;一起照着来练习吧&#xff01;今天我们通过…

ARP(地址解析协议)详解

1. 引言 在计算机网络中&#xff0c;数据链路层使用MAC地址来传输数据&#xff0c;而网络层使用IP地址来标识设备。当一个设备需要发送数据给另一个设备时&#xff0c;它只知道目标设备的IP地址&#xff0c;而不知道其对应的MAC地址。此时&#xff0c;地址解析协议&#xff08;…

vue2前端阿里云oss断点续传

官方文档地址&#xff1a;如何通过断点续传上传的方式将文件上传到OSS_对象存储(OSS)-阿里云帮助中心 1、需要后端提供一个接口&#xff0c;接口数据包含&#xff1a; const client new OSS({// yourRegion填写Bucket所在地域。以华东1&#xff08;杭州&#xff09;为例&…

uni-app中分页器的实现

一、template change函数在每次点击上一页 或者写一页的时候会触发&#xff0c;其传递的参数是当前的current页数 <uni-section class"fixed-bottom" title"默认样式" type"line" padding><uni-pagination change"handleList&qu…