关于docker:Docker-简介与镜像用法

10次阅读

共计 2740 个字符,预计需要花费 7 分钟才能阅读完成。

阿里云官网镜像站:

https://developer.aliyun.com/mirror/?utm_content=g_1000303593

一、容器简介

Docker 是治理容器的引擎。

Docker 为利用打包、部署平台,而非单纯的虚拟化技术。

docker 容器的劣势:

对于开发人员:Build once、Run anywhere。

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

二、容器的部署

docker 源:

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

[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0

因为在装置 docker-ce 时有许多依赖性,都是 Centos 源

咱们在仓库源搭建 Centos 源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/re…

sed -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 = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl  --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 busybox
RUN touch file1
RUN mkdir LINUX

构建镜像:

docker build -t demo:v1 .

查看镜像的分层构造:

[root@server11 Docker]# docker history  demo:v1
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
08d1b013dbd9   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        
<missing>      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/www/html”]

WORKDIR

为 RUN、CMD、ENTRYPOINT、ADD 和 COPY 指令设置镜像中的当前工作目录,如果目录不存在会主动创立。

RUN

在容器中运行命令并创立新的镜像层,罕用于装置软件包:

RUN 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  建设 file3
COPY index.html /   复制文件到容器里
ADD test.tar.gz /mnt  加此压缩包到容器里的 /mnt 下
ENV HOSTNAME server11  定义变量 $HOSTNAME=server11
EXPOSE 80       裸露 80 端口
VOLUME ["/data"] 再此目录里建设的文件,在 /var/lib/docker/volumes/ 下的目录数据里有方才新建的文件,如果再此目录建设文件,也会同步到容器里。
docker build -t demo:v9 .
[root@server11 Docker]# docker run  -it --rm demo:v9
/ # ls
LINUX       data        file1       home        proc        tmp         westos
REDHAT      dev         file2       index.html  root        usr
bin         etc         file3       mnt         sys         var
/ # env
HOSTNAME=server11
SHLVL=1
HOME=/root
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
/ # cd /mnt/
/mnt # ls
etc

原文链接:https://blog.csdn.net/qq_4928…

正文完
 0