Docker —— 简介与镜像用法

网友投稿 238 2022-10-23

Docker —— 简介与镜像用法

​阿里云官方镜像站:

​​once、Run anywhere。

对于运维人员:Configure once、Run anything。

二、容器的部署

docker源:

[root@server1 yum.repos.d]# cat docker.repo

[docker]name=docker-cebaseurl=-o /etc/yum.repos.d/CentOS-Base.repo ​​-i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

编辑Centos仓库源:%s/$releasever/7/g

安装docker-ceyum install docker-ce -y

systemctl enable --now docker

此时执行docker info会报错

[root@server1 sysctl.d]# pwd/etc/sysctl.d[root@server1 sysctl.d]# cat docker.conf net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1sysctl --system

这下就不会报错

三、Docker镜像

1.镜像的分层结构

共享宿主机的kernel

base镜像提供的是最小的Linux发行版

同一docker主机支持运行多种Linux发行版

采用分层结构的最大好处是:共享资源

Copy-on-Write 可写容器层

容器层以下所有镜像层都是只读的

docker从上往下依次查找文件

容器层保存镜像变化的部分,并不会对镜像本身进行任何修改

一个镜像最多127层

2.镜像的构建

docker commit 构建新镜像三部曲

运行容器

修改容器

将容器保存为新的镜像

缺点:

效率低、可重复性弱、容易出错

使用者无法对镜像进行审计,存在安全隐患

docker commit -m “add files” demoo demo:v1

或创建一个Dockerfile:

cat /root/Docker

FROM busyboxRUN touch file1RUN mkdir LINUX

构建镜像:

docker build -t demo:v1 .

查看镜像的分层结构:

[root@server11 Docker]# docker history demo:v1IMAGE CREATED CREATED BY SIZE COMMENT08d1b013dbd9 39 minutes ago /bin/sh -c mkdir westos 0B 655ad284a2b5 39 minutes ago /bin/sh -c touch file1 0B 59788edf1f3e 2 years ago /bin/sh -c #(nop) CMD ["sh"] 0B 2 years ago /bin/sh -c #(nop) ADD file:63eebd629a5f7558c… 1.15MB

四、Dockerfile详解:

dockerfile常用指令:

FROM

指定base镜像,如果本地不存在会从远程仓库下载。

MAINTAINER

设置镜像的作者,比如用户邮箱等。

COPY

把文件从build context复制到镜像

支持两种形式:COPY src dest 和 COPY [“src”, “dest”]

src必须指定build context中的文件或目录

ADD

用法与COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest

ENV

设置环境变量,变量可以被后续的指令使用:

ENV HOSTNAME sevrer1.example.com

EXPOSE

如果容器中运行应用服务,可以把服务端口暴露出去:

EXPOSE 80

VOLUME

申明数据卷,通常指定的是应用的数据挂在点:

VOLUME ["/var/yum install -y vim

CMD 与 ENTRYPOINT

这两个指令都是用于设置容器启动后执行的命令,但CMD会被docker run后面的命令行覆盖,而ENTRYPOINT不会被忽略,一定会被执行。

docker run后面的参数可以传递给ENTRYPOINT指令当作参数。

Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。

cat /root/dockerfile

FROM demo:v1 在demo:v1的基础上RUN touch file3 建立file3COPY index.html / 复制文件到容器里ADD test.tar.gz /mnt 加此压缩包到容器里的/mnt下ENV HOSTNAME server11 定义变量$HOSTNAME=server11EXPOSE 80 暴露80端口VOLUME ["/data"] 再此目录里建立的文件,在/var/lib/docker/volumes/下的目录数据里有刚才新建的文件,如果再此目录建立文件,也会同步到容器里。

docker build -t demo:v9 .[root@server11 Docker]# docker run -it --rm demo:v9/ # lsLINUX data file1 home proc tmp westosREDHAT dev file2 index.html root usrbin etc file3 mnt sys var/ # envHOSTNAME=server11SHLVL=1HOME=/rootTERM=xtermPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPWD=// # cd /mnt//mnt # lsetc

原文链接:​​https://blog.csdn.net/qq_49286390/article/details/113061723​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Facebook用聊天机器人帮客户推送消息
下一篇:工控主板的主要接口有哪些,关于这些接口的详细介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~