docker4

​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

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

bash 复制代码
[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.创建挂载目录

bash 复制代码
[root@docker ~]# mkdir /regist

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

bash 复制代码
[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.访问仓库

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

5.搭建仓库 配置pull和push,修改daemon.json

bash 复制代码
[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服务

bash 复制代码
[root@docker ~]# systemctl restart docker.service        重启服务

7.启动registry容器

bash 复制代码
[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.使用镜像做仓库

bash 复制代码
[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"]}

相关推荐
我是唐青枫8 小时前
Linux ar 命令使用详解
linux·运维·服务器
mljy.9 小时前
Linux《进程概念(上)》
linux
IEVEl9 小时前
Centos7 开放端口号
linux·网络·centos
我要升天!10 小时前
Linux中《环境变量》详细介绍
linux·运维·chrome
MobiCetus10 小时前
有关pip与conda的介绍
linux·windows·python·ubuntu·金融·conda·pip
weixin_4284984911 小时前
Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化
linux·运维·性能优化
lemon31062413 小时前
dockerfile制作镜像
linux·运维·服务器·学习
易保山13 小时前
MIT6.S081 - Lab5 Lazy(延迟分配)
linux·操作系统·c
想躺在地上晒成地瓜干14 小时前
树莓派超全系列文档--(14)无需交互使用raspi-config工具其一
linux·树莓派·raspberrypi·树莓派教程
Shier833_Ww14 小时前
目标识别与双目测距(1)环境搭建:Ubuntu+yolov5+pcl库
linux·yolo·ubuntu