上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践

先查看下本地的镜像,选一个作为base image:

[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wadeson/centos_nginx v1 210a202d37b8 hours ago 464MB
nginx latest c59f17fe53b0 days ago 108MB
ubuntu latest 747cb2d60bbe weeks ago 122MB
centos latest 196e0ce0c9fb weeks ago 197MB

在某一个目录下面创建一个专门存放此demo的目录,也就是Dockerfile所在的context:

[root@docker ~]# mkdir docker_demo
[root@docker ~]# cd docker_demo/
[root@docker docker_demo]# touch Dockerfile
[root@docker docker_demo]# pwd
/root/docker_demo
[root@docker docker_demo]# ll
total
-rw-r--r--. root root Nov : Dockerfile

接下来就开始编写Dockerfile文件了(注意Dockerfile的D需要大写)

这里以编译nginx提供web服务来构建新的镜像

1、下载nginx源码包到docker_demo这个目录下:

[root@docker docker_demo]# ll
total
-rw-r--r--. root root Nov : Dockerfile
-rw-r--r--. root root Oct : nginx-1.12..tar.gz

2、以下是编写好的Dockerfile v1版:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos

# MAINTAINER
MAINTAINER json_hc@163.com

# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12.2.tar.gz /usr/local/src

# running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx

# change dir to /usr/local/src/nginx-1.12.2
WORKDIR /usr/local/src/nginx-1.12.2

# execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

EXPOSE 80

3、查看docker_demo目录情况:

[root@docker docker_demo]# ll
total
-rw-r--r--. root root Nov : Dockerfile
-rw-r--r--. root root Oct : nginx-1.12..tar.gz

4、执行docker build进行构建:

docker build -t centos_nginx:v1 .

后面的.代表的是相对路径的当前目录,如果需要全路径则为/root/docker_demo(就是找到Dockerfile文件)

构建成功后,查看新构建的镜像:

[root@docker docker_demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v1 78d18f16e757 hours ago 464MB
wadeson/centos_nginx v1 210a202d37b8 hours ago 464MB
nginx latest c59f17fe53b0 days ago 108MB
ubuntu latest 747cb2d60bbe weeks ago 122MB
centos latest 196e0ce0c9fb weeks ago 197MB

5、然后使用构建的镜像启动一个container并开启nginx服务:

[root@docker docker_demo]# docker run -d centos_nginx:v1 /usr/local/nginx/sbin/nginx -g "daemon off;"
ea5af922378356a5ebff60992f000b186b09d1e8d6a4915b0b8ccf997ca12404

然后查看启动的container是否在运行:

[root@docker docker_demo]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ea5af9223783 centos_nginx:v1 "/usr/local/nginx/..." seconds ago Up seconds /tcp flamboyant_carson

虽然nginx服务开启了,但是port并没有进行映射到本机host,所以这个container并不能进行访问,重新启动一个进行了映射端口的容器

[root@docker docker_demo]# docker run -d -p80: centos_nginx:v1 /usr/local/nginx/sbin/nginx -g "daemon off;"
e4b6e4846dedc6f130e028701c84828a635f3b367c0d500ebd947de16b1be0b2

再次查看端口映射信息:

[root@docker docker_demo]# docker port e4b6e4846ded
/tcp -> 0.0.0.0:

于是进行访问:

于是基于Dockerfile的一个简单实例构建完成,现在基于这个Dockerfile文件依次添加其他的指令进行构建

添加ENV环境变量指令:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos # MAINTAINER
MAINTAINER json_hc@.com # put nginx-1.12..tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12..tar.gz /usr/local/src # running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx # change dir to /usr/local/src/nginx-1.12.
WORKDIR /usr/local/src/nginx-1.12. # execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install ENV PATH /usr/local/nginx/sbin:$PATH EXPOSE

然后进行构建:

[root@docker docker_demo]# docker build -t centos_nginx:v2 .
Sending build context to Docker daemon .6kB
Step / : FROM centos
---> 196e0ce0c9fb
Step / : MAINTAINER json_hc@.com
---> Using cache
---> cde1d7830106
Step / : ADD nginx-1.12..tar.gz /usr/local/src
---> Using cache
---> 1e4d16340af0
Step / : RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
---> Using cache
---> 405835ad9b0b
Step / : RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
---> Using cache
---> 4002738cf7a6
Step / : RUN useradd -M -s /sbin/nologin nginx
---> Using cache
---> 02961c5c564d
Step / : WORKDIR /usr/local/src/nginx-1.12.
---> Using cache
---> f1da71a93c5e
Step / : RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
---> Using cache
---> cd2ad4c45004
Step / : ENV PATH /usr/local/nginx/sbin:$PATH
---> Running in 07ba2f7129bc
---> 9588fa1058aa
Removing intermediate container 07ba2f7129bc
Step / : EXPOSE
---> Running in 473cd847154a
---> 2031faf8894a
Removing intermediate container 473cd847154a
Successfully built 2031faf8894a
Successfully tagged centos_nginx:v2

由于在构建的过程中docker会采用缓存的机制,上面的构建过程中包含很多using cache,所以这次构建非常快,如果需要重新构建,不想使用cache需要添加--no-cache

--no-cache                   Do not use cache when building the image

查看v2版本的镜像:

[root@docker docker_demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v2 2031faf8894a minutes ago 464MB

使用v2版本的镜像启动一个container:

[root@docker docker_demo]# docker run -d -p81: centos_nginx:v2 nginx -g "daemon off;"
da48b465b1b1a14824497d724eee52b8408270b3b5223c5dd7094b7c0cef211d

查看container运行状态:

[root@docker docker_demo]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da48b465b1b1 centos_nginx:v2 "nginx -g 'daemon ..." seconds ago Up seconds 0.0.0.0:->/tcp determined_neumann

进行访问:

上述启动容器的过程中使用的命令docker run -d -p81:80 centos_nginx:v2 nginx -g "daemon off;"为什么这里使用的nginx而不是

/usr/local/nginx/sbin/nginx,因为在Dockerfile文化中执行了PATH=/usr/local/nginx/sbin:$PATH,添加到了环境变量

添加指令CMD:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos # MAINTAINER
MAINTAINER json_hc@.com # put nginx-1.12..tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12..tar.gz /usr/local/src # running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx # change dir to /usr/local/src/nginx-1.12.
WORKDIR /usr/local/src/nginx-1.12. # execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install ENV PATH /usr/local/nginx/sbin:$PATH EXPOSE CMD /bin/sh -c 'nginx -g "daemon off;"'

然后进行构建:

[root@docker docker_demo]# docker build -t centos_nginx:v3 .

查看v3版本的镜像:

[root@docker docker_demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v3 0e49a2c0562f seconds ago 464MB

然后基于v3版本的镜像启动一个container:

[root@docker docker_demo]# docker run -d -p82: centos_nginx:v3
d988c04d04f49b909f28e7b664be3959a0d51b951f1c1b04fcf5c716552b7c41

查看启动的容器状态:

[root@docker docker_demo]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d988c04d04f4 centos_nginx:v3 "/bin/sh -c '/bin/..." seconds ago Up seconds 0.0.0.0:->/tcp optimistic_saha

最后进行访问:

新增加的CMD /bin/sh -c 'nginx -g "daemon off;"'表示

当启动一个container时默认运行的命令,如果在启动container时赋予了command的化,那么

定义的CMD中的命令将不会被执行,而会去执行command的命令

添加entrypoint指令:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos # MAINTAINER
MAINTAINER json_hc@.com # put nginx-1.12..tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12..tar.gz /usr/local/src # running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx # change dir to /usr/local/src/nginx-1.12.
WORKDIR /usr/local/src/nginx-1.12. # execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install ENV PATH /usr/local/nginx/sbin:$PATH EXPOSE ENTRYPOINT ["nginx"] CMD ["-g","daemon off;"]

当ENTRYPOINT和CMD连用时,CMD的命令是ENTRYPOINT命令的参数,两者连用相当于nginx -g "daemon off;"

而当一起连用的时候命令格式最好一致(这里选择的都是json格式的是成功的,如果都是sh模式可以试一下)

开始进行构建v4版本:

[root@docker docker_demo]# docker build -t centos_nginx:v4 .

查看新建的镜像:

[root@docker docker_demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v4 6c5128aaff05 minutes ago 464MB

为v4版本的镜像启动一个container:

[root@docker docker_demo]# docker run -d -p83: centos_nginx:v4
6933c78255f3cebe44d4d5d080caf8a2fde45ded2f9b333ec01cdfe98cd5f417

然后查看容器状态:

[root@docker docker_demo]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6933c78255f3 centos_nginx:v4 "nginx -g 'daemon ..." seconds ago Up seconds 0.0.0.0:->/tcp zealous_euclid

最后进行访问:

这里增加一个案例,如果Dockerfile修改成下面:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos # MAINTAINER
MAINTAINER json_hc@.com # put nginx-1.12..tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12..tar.gz /usr/local/src # running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx # change dir to /usr/local/src/nginx-1.12.
WORKDIR /usr/local/src/nginx-1.12. # execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install ENV PATH /usr/local/nginx/sbin:$PATH EXPOSE ENTRYPOINT ["nginx"] CMD ["-g","daemon on;"]

CMD的命令修改为了后台,我们知道如果容器内的进程在后台运行那么容器将不会运行,现在以此构建v5版本镜像:

[root@docker docker_demo]# docker build -t centos_nginx:v5 .

查看v5版本的新镜像:

[root@docker docker_demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v5 5c1131306686 seconds ago 464MB

现在利用v5版本镜像启动一个container,但是在启动的时候添加后面的command:

[root@docker docker_demo]# docker run -d -p85: centos_nginx:v5 -g "daemon off;"
5e11edbbd2a0e184f1766c435c0d9b01ef5d74b57e2e2c3a1efed0cf2a2e037b

可以看见在后面新增了-g "daemon off;",前面说过如果增加了命令那么Dockerfile中的CMD中的命令将不会生效

查看容器运行状态:

[root@docker docker_demo]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e11edbbd2a0 centos_nginx:v5 "nginx -g 'daemon ..." seconds ago Up seconds 0.0.0.0:->/tcp nifty_bartik

可以看见容器的运行丝毫没有问题,于是nginx的服务依然还是在前台运行,没有被CMD影响,而新增加的command(-g "daemon off;")

将作为ENTRYPOINT的新的参数以此为准,于是进行访问端口85

添加VOLUME指令:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos # MAINTAINER
MAINTAINER json_hc@.com # put nginx-1.12..tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12..tar.gz /usr/local/src # running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx # mount a dir to container
VOLUME ["/data"] # change dir to /usr/local/src/nginx-1.12.
WORKDIR /usr/local/src/nginx-1.12. # execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # setup PATH
ENV PATH /usr/local/nginx/sbin:$PATH # EXPOSE
EXPOSE # the command of entrypoint
ENTRYPOINT ["nginx"] CMD ["-g"]

开始进行构建:

[root@docker docker_demo]# docker build -t centos_nginx:v6 .

查看v6版本的镜像:

[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v6 959fdf4d4288 seconds ago 464MB

利用该镜像启动一个container:

[root@docker ~]# docker run -d -p : --name=nginx6 centos_nginx:v6 -g "daemon off;"
6c15a9e93fb1421bdb7eddaabe439996e97415e85a003f80c1d8b4b2c5ee3ffa

查看启动的容器状态:

[root@docker ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c15a9e93fb1 centos_nginx:v6 "nginx -g 'daemon ..." seconds ago Up seconds 0.0.0.0:->/tcp nginx6

利用docker exec进入到container中,查看是否存在卷/data:

[root@6c15a9e93fb1 /]# ll
total
-rw-r--r--. root root Sep : anaconda-post.log
lrwxrwxrwx. root root Sep : bin -> usr/bin
drwxr-xr-x. root root Nov : data

这个/data挂载的目录对应本机host的这个目录:

[root@docker _data]# pwd
/var/lib/docker/volumes/3490a9b7f9773b020343e82c1c4236d976b69eb6a80121eb80612d8c39e02820/_data

现在在本机host上的这个目录创建一个文件:

[root@docker _data]# touch wadeson.sh
[root@docker _data]# ll
total
-rw-r--r--. root root Nov : wadeson.sh

然后切换到container中查看是否存在这个文件:

[root@6c15a9e93fb1 /]# ll /data/
total
-rw-r--r--. root root Nov : wadeson.sh

添加ONBUILD指令:

  Dockerfile1中base image为A镜像,并在Dockerfile1中定义ONBUILD指令,构建成新镜像B镜像

  Dockerfile2中base image为B镜像,构建成新镜像C

  当使用镜像B启动的container1不会执行OBNUILD中定义的内容,而使用C镜像启动的container2则会执行ONBUILD定义的内容

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos # MAINTAINER
MAINTAINER json_hc@.com # put nginx-1.12..tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12..tar.gz /usr/local/src # running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx # mount a dir to container
ONBUILD VOLUME ["/data"] # change dir to /usr/local/src/nginx-1.12.
WORKDIR /usr/local/src/nginx-1.12. # execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # setup PATH
ENV PATH /usr/local/nginx/sbin:$PATH # EXPOSE
EXPOSE # the command of entrypoint
ENTRYPOINT ["nginx"] CMD ["-g"]

使用上面Dockerfile构建镜像版本v7:

[root@docker docker_demo]# docker run -d -p : --name=nginx7 centos_nginx:v7 -g "daemon off;"
48f1fe5c71aefc0f9513e8085af8f5b7cdf14fa986fb3b11f2050f18ceefd26e

现在进入到容器内查看是否存在/data:

[root@docker ~]# docker exec -it nginx7 /bin/bash
[root@48f1fe5c71ae nginx-1.12.]# ll /data
ls: cannot access /data: No such file or directory

现在修改上面Dockerfile的FROM基于的base image:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos_nginx:v7

# MAINTAINER
MAINTAINER json_hc@163.com

利用此Dockerfile构建镜像v8:

[root@docker docker_demo]# docker build -t centos_nginx:v8 .
Sending build context to Docker daemon .6kB
Step / : FROM centos_nginx:v7
# Executing build trigger...
Step / : VOLUME /data
---> Running in a6187867513d
---> 5ac07930be4c
Removing intermediate container a6187867513d
Step / : MAINTAINER json_hc@.com
---> Running in e02dbf8219cf
---> 6f792dc07c35
Removing intermediate container e02dbf8219cf
Successfully built 6f792dc07c35
Successfully tagged centos_nginx:v8

可以看见卷/data已经执行了操作,现在启动一个container:

[root@docker docker_demo]# docker run -d -p : --name=nginx8 centos_nginx:v8 -g "daemon off;"
6c2a847c5f6b59b02f91afecadbfc15c88d1217a477c0421a424bce6e5eb317a

查看容器状态,并进入到容器验证/data目录:

[root@docker docker_demo]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c2a847c5f6b centos_nginx:v8 "nginx -g 'daemon ..." seconds ago Up seconds 0.0.0.0:->/tcp nginx8
[root@docker docker_demo]# docker exec -it nginx8 /bin/bash
[root@6c2a847c5f6b nginx-1.12.]# ll /data/
total

由此可见镜像v8包含了v7 的所有内容,并且增加了ONBUILD的内容

docker之Dockerfile实践的更多相关文章

  1. [转]docker之Dockerfile实践

    本文转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为 ...

  2. 【转】docker之Dockerfile实践

    转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为ba ...

  3. 7.云原生之Docker容器Dockerfile镜像构建浅析与实践

    转载自:https://www.bilibili.com/read/cv15220707/?from=readlist Dockerfile 镜像构建浅析与实践 描述:Dockerfile是一个文本格 ...

  4. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  5. 微服务 + Docker + Kubernetes 入门实践 目录

    微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...

  6. 【04】循序渐进学 docker:Dockerfile

    写在前面的话 从前面我们简单的了解了镜像,也运行了容器,各种官方的镜像显然无法满足我们自己的需求,我们目的终究是运行自己的业务. 所以,本章节的 Dockerfile 就主要讲怎么在官方镜像的基础上制 ...

  7. [转帖]龙芯:Docker 配置与实践清单

    Docker 配置与实践清单 http://www.sohu.com/a/254904706_198222 文章对来官方文档及 Docker Links[1] 中链接内容进行归档整理,包含了日常工作中 ...

  8. docker容器dockerfile详解

    docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...

  9. Dockerfile 实践及梳理

    Dockerfile 是一个文本文件,我们可以通过组合一条条的指令 (Instruction),来构建满足我们需求的 Docker 镜像 文档 Best practices for writing D ...

随机推荐

  1. CF1B Spreadsheets

    题意翻译 人们常用的电子表格软件(比如: Excel)采用如下所述的坐标系统: 第一列被标为A,第二列为B,以此类推,第26列为Z.接下来为由两个字母构成的列号: 第27列为AA,第28列为AB... ...

  2. js判断PC端还是移动端

    function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobi ...

  3. ASP.NET Core 中读取 Request.Body 的正确姿势

    ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能 ...

  4. 使用pm2在同服务器配置开发、生产、测试等环境

    export NODE_ENV=production 只能适用于node xxx.js的前台运行 set NODE_ENV=production貌似无效 pm2 做法: 创建pm2.config.js ...

  5. vim diff 使用

    1. 可以在用户目录下编辑.vimrc 文件,设置vim格式.如无该文件,添加即可vim ~/.vimrc 内容自己添加set ts=4 "set tabstop=4set nu    &q ...

  6. VUE 全局变量的几种实现方式

    最近在学习VUE.js 中间涉及到JS全局变量,与其说是VUE的全局变量,不如说是模块化JS开发的全局变量. 1.全局变量专用模块 就是以一个特定模块来组织管理这些全局量,需要引用的地方导入该模块便好 ...

  7. __call__方法和Flask中 first_or_404

    1.__call__方法: 在一个类的实例中,函数一般都是可调用的对象: __call__方法时魔法方法,该方法允许程序员创建可调用的对象(实例),默认情况下是不会触发,也就是说,大多数实例是不可被调 ...

  8. Cartographer源码阅读(6):LocalTrajectoryBuilder和PoseExtrapolator

    LocalTrajectoryBuilder意思是局部轨迹的构建,下面的类图中方法的参数没有画进去. 注意其中的三个类:PoseExtrapolator类,RealTimeCorrelativeSca ...

  9. python基础之 面向对象

    1.什么是面向对象? 在大学学习c#的时候接触面向对象,知道好像有什么方法,属性,人狗大战啥的.但是都忘记了,也不知道面向对象到底是个啥! 在python中一切都是对象,linux中一切都是文件(突然 ...

  10. [js]变量提升-关于条件

    条件函数变量提示于全局中函数变量提升不一样. 条件中: 函数变量提升, 只是声明(现新版本浏览器中) if(g()){ function g() { return true } console.log ...