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"]}

相关推荐
翻滚吧键盘4 分钟前
查看linux中steam游戏的兼容性
linux·运维·游戏
小能喵8 分钟前
Kali Linux Wifi 伪造热点
linux·安全·kali·kali linux
汀沿河23 分钟前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly350036 分钟前
centos7 ping127.0.0.1不通
linux·运维·服务器
小哥山水之间1 小时前
基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
linux
ldj20202 小时前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
翻滚吧键盘2 小时前
opensuse tumbleweed上安装显卡驱动
linux
cui_win3 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
CodeWithMe6 小时前
【Note】《深入理解Linux内核》 Chapter 15 :深入理解 Linux 页缓存
linux·spring·缓存
0wioiw06 小时前
Ubuntu基础(监控重启和查找程序)
linux·服务器·ubuntu