一、测试环境

    dockerfile,
重若是四片段构成:基础镜像新闻、维护者音信、镜像操作指令、容器启动推行命令。

私家认为 编译时所费用的年华很一大半都是花在
更新镜像源那块(即获得上游镜像的经过中),尤其是使用官方源(国外源)作者等的连死的心都有了-_-

build Build an image from a Dockerfile 通过Dockerfile打造出一个镜像

OS version: CentOS Linux release 7.5.1804 (Core)

 

从镜像获取角度

#######书中涉及,当必要在地方分裂的宿主机中配备相同的镜像,若是分主机一个一个从dockerhub上下载是无济于事的,故选拔了上一节的私人registry仓库计划,从而达到五次下载举行分配而无需多次下载。

安排本地registry文件地方
ubuntu主机的docker.service文件地方为:/etc/default/docker/
centos主机的docker.service文件地方为:/etc/sycconfig/docker
搭建本地registry可以看本人的稿子.

########当然其余主机下载时,首先会检查同一局域网中是或不是留存registry,若存在则从地面拷贝下载(即忽略dockerhub下载),否则就从dockerhub上下载。其次,docker
daemon还会检讨是否本地存在一样的sha256值的一致镜像,如分歧才下载。
书中涉嫌,搭建docker本地Registry可以升官下载上游镜像的进度,平日速度可以升高两倍左右~>-<

澳门金沙国际 1

这是作者从另一台docker主机下载当地registry镜像的小时

要是sha256值,即镜像一样时无须下载

澳门金沙国际 2

Docker品质优化,创设本地镜像。一样sha256为:2daa1d34f7063398edaff5b67c无须下载

[root@localhost ~]# docker build --help

Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

Options:
      --add-host list           Add a custom host-to-IP mapping (host:ip)                  添加自定义的主机到IP映射(主机:IP)
      --build-arg list          Set build-time variables                                   设置镜像创建时的变量
      --cache-from strings      Images to consider as cache sources                        指定缓存源,指定后将再不使用本地生成的镜像链,而是从镜像仓库中下载
      --cgroup-parent string    Optional parent cgroup for the container                   容器的可选父cgroup
      --compress                Compress the build context using gzip                      使用gzip压缩构建上下文
      --cpu-period int          Limit the CPU CFS (Completely Fair Scheduler) period       限制 CPU CFS周期
      --cpu-quota int           Limit the CPU CFS (Completely Fair Scheduler) quota        限制 CPU CFS配额
  -c, --cpu-shares int          CPU shares (relative weight)                               设置 cpu 使用权重
      --cpuset-cpus string      CPUs in which to allow execution (0-3, 0,1)                指定使用的CPU id
      --cpuset-mems string      MEMs in which to allow execution (0-3, 0,1)                指定使用的内存 id
      --disable-content-trust   Skip image verification (default true)                     忽略校验,默认开启
  -f, --file string             Name of the Dockerfile (Default is 'PATH/Dockerfile')      指定要使用的Dockerfile路径
      --force-rm                Always remove intermediate containers                      设置镜像过程中删除中间容器
      --iidfile string          Write the image ID to the file                             将图像ID写入文件
      --isolation string        Container isolation technology                             使用容器隔离技术
      --label list              Set metadata for an image                                  设置镜像使用的元数据
  -m, --memory bytes            Memory limit                                               设置内存最大值
      --memory-swap bytes       Swap limit equal to memory plus swap: '-1' to enable unlimited swap                    设置Swap的最大值为内存+swap,"-1"表示不限swap
      --network string          Set the networking mode for the RUN instructions during build (default "default")      在构建期间为RUN指令设置联网模式(默认“default”)
      --no-cache                Do not use cache when building the image                                               创建镜像的过程不使用缓存
      --pull                    Always attempt to pull a newer version of the image                                    尝试去更新镜像的新版本
  -q, --quiet                   Suppress the build output and print image ID on success                                安静模式,成功后只输出镜像ID
      --rm                      Remove intermediate containers after a successful build (default true)                 设置镜像成功后删除中间容器
      --security-opt strings    Security options                                                                       安全选项
      --shm-size bytes          Size of /dev/shm                                                                       设置/dev/shm的大小,默认值是64M
  -t, --tag list                Name and optionally a tag in the 'name:tag' format                                     以'name:tag'格式命名和可选的标记
      --target string           Set the target build stage to build.                                                   设置要构建的目标构建阶段。
      --ulimit ulimit           Ulimit options (default [])                                                            Ulimit配置

docker cluster : master 1 + data node 4

step 1: 根据语法,如下写一个centos操作系统的nignx镜像。

从复用镜像层角度(dockerfile角度)

  • 改变语序以复用缓存
  • 削减打造上下文大小
  • 拔取缓存代理

docker
build是老大重大的一个效果,你可以用它来构建出适合您协调必要的镜像
是因为地下镜像的安全性不能拿到保障,而大家又实在须要或多或少特殊效果的镜像,因而我们可以动用Dockerfile,创立一个方可确保安全性的镜像

docker version: 1.13.1

澳门金沙国际 3

转移dockerfile语序以复用缓存(即将dockerfile中蕴藏update或者install的言语提前)

打探过dockerfile原理的宝贝们都清楚:当我们在创设Dockerfile时,docker会检查dockerfile中正在处理的指令,判断在它的缓存机制中是还是不是留存可以复用的镜像,而不是再一次创立一个一致的镜像。通过转移语句如“RUN
apt-get update”或者”RUN bundle install”或者“RUN yum -y
update”等立异程序包等话语,对借助库开展四次操作而为重复操作。在一大半景观下。大家立异的只是应用程序中的焦点部分。
书中提到的是ruby的bundle更新,那里跟着书上一样举办试验:
$ mkdir ~/rubyapp
$ cd ~/rubyapp
然后必要创立多个公文
$vim config.ru


app= proc do |env|
[200, {} , %w(hello docker)]
end
run app

澳门金沙国际 4

config.ru文件



$vim Gemfile
source
‘https://gems.ruby-china.org/’

gem ‘rack’
gem ‘nokogiri’

澳门金沙国际 5

Gemfile文件


$ vim Dockerfile
FROM ruby:2.2.2

ADD . /app
WORKDIR /app
RUN bundle install

EXPOSE 9292
CMD rackup -E none

澳门金沙国际 6

Dockerfile文件


澳门金沙国际 7

当前目录有三个文本

执行$ time docker build -t showdependencies .

澳门金沙国际 8

消费了濒临3分钟

###########前几日涂改config.ru文件的内容变更应用程序的效率
$vim config.ru


app= proc do |env|
[200, {} , %w(hello other docker)]
end
run app


澳门金沙国际 9

只是改变了一行!!

在此处只是添加了“other”

澳门金沙国际 10

只是改变了一行语句!!

#######可以发现:固然有一行代码爆发了改观,然则照旧须求在创制镜像的经过中为Docker镜像的每一趟迭代执行bundle
install命令,那样是很没用的~~~
书中涉嫌,为了优化,大家改变语序,#########将准备应用程序依赖的翻新部分的级差从所有应用程序镜像架构中剥离出来

据此本文第四个要讲的就是dockerfile
dockerfile可以起先的接头为是docker的剧本,通过那一个本子你可以将原本一个单纯的系统镜像参与过多谈得来索要的软件。
dockerfile文件是一个由一体系创设指令组成的文件文件,docker
build命令会按照这一个营造指令完毕docker镜像的构建。

 

接下来记得:wq保存和退出vi。

变更dockerfile文件,剥离更新语句

$ vim Dockerfile


FROM ruby:2.2.2

ADD Gemfile /app/Gemfile
WORKDIR /app
RUN bundle install
ADD . /app //这句话置为立异语句后>-<

EXPOSE 9292
CMD rackup -E none


澳门金沙国际 11

原本的dockerfile

澳门金沙国际 12

现在的dockerfile文件

第一实施dockerfile举行创设,时间应当和后边的大概相同
$ time docker build -t showdependencies .

澳门金沙国际 13

修改后的Dockerfile打造

###########近来无冕修改config.ru文件的始末变更应用程序的职能,+多少个other随意
$vim config.ru


app= proc do |env|
[200, {} , %w(hello other other other other docker)]
澳门金沙国际 ,end
run app


澳门金沙国际 14

修改config.ru重新营造镜像,天啊撸!速度快得惊人!

澳门金沙国际 15

那就是速度!

#########不得不提的是,从出口的笔录可以见见,docker
build复用了Steps3中的缓存,那是因为对于Gemfile文件并不曾变动

表达:打造会在Docker后台守护进程(daemon)中实践,而不是CLI中。打造前,营造进度会将全体内容(递归)发送到守护进度。大多情状下,应该将一个空目录作为打造上下文环境,并将Dockerfile文件放在该目录下。

二、材料准备

 

Docker镜像的编译时间下落了约80倍

在打造上下文中使用的Dockerfile文件,是一个创设指令文件。为了增强打造质量,可以通过.dockerignore文件排除上下文目录下,不需求的文本和目录。

  1. dockerfile 文件,如下

step 2: 创设dockerfile镜像文件

记住,将立异语句集结到Dockerfile最前段,可实用节约修改后创设的光阴


</br>

命令为:

/opt/command/kevin_docker_files/01_nginx/Dockerfile/kevin_nginx_dockerfile.dockerignore

备考:最后加1个空格,1个英文句号,OK

压缩营造上下文大小(即接纳dockerignore忽略一些文本)

澳门金沙国际 16

存在那样的一个文书夹

书中关系:如果大家在依据Git版本控制管理中有一个dockerfile文件,在现阶段文件夹中设有一个1001M分寸的.git文件。当编译Docker镜像时会发现时间尤其久,原因是在编译时docker客户端上传了方方面面.git文件夹,而单独是因为它在镜像的编译路径下!!!于是Docker守护进度花了大气的时日来拔取那部分情节。
########不得不提的是,那个.git文件内容对于编译dockerfile镜像是无益的!那些Git相关的公文对此在生养条件中的应用是于事无补的,由此大家设定Docker去忽略掉一部分文件:使用.dockerignore
于是乎在当前目录创造一个.dockerignore文件,参加以下内容:
.git

澳门金沙国际 17

add .dockerignore

下一场再次编译镜像您回发现docker镜像编译的年华分明缩水!!
########编译时间最少升高了500倍以上, 同时削减了编译内容的分寸
*(注:此处多处引用原文,望原文小编不要怪罪>_<)


docker build -f Dockerfile_PATH .
也足以插足-t参数指定营造后的镜像名称、标签

如:docker build -t nginx:old -f Dockerfile_PATH .

# Instruction
FROM centos

# LABLE info
LABEL vendor="itshare" \
      version="0.0.1-beta" \
      release-date="2018-09-02"

# Dockerfile execute command
RUN mkdir -p /opt/apt/
RUN touch /opt/apt/sources.list
RUN echo "kevin.tian installed nginx" >> /opt/apt/sources.list
# RUN yum update && yum install -y nginx
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# Container startup command
CMD /usr/sbin/nginx

root >>> docker build -t kevin_nginx/v1:latest -f
/opt/command/kevin_docker_files/kevin_nginx_dockerfile.dockerignore
.

使用缓存代理(即利用器重包代理工具有效减短编译指令所开销的小时)

书中提到,一个根据Debian的系统的Docker镜像从APT资源库中下载着重包,编译镜像的历程中,apt-get
install指令运行的大运长度取决于互连网与所急需下载器重包的轻重。下跌时间的技术是引入那一个看重包的缓存代理:如apt-cacher-ng工具等等

那里运用搜狐蜂巢的镜像进行测试
$ vim Dockerfile


FROM hub.c.163.com/netease_comb/debian:7.9
MAINTAINER netease

RUN apt-get update &&
apt-get install -y nginx

EXPOSE 22 80 443

ENTRYPOINT /etc/init.d/nginx start && /usr/sbin/sshd -D

澳门金沙国际 18

新浪蜂巢nginx镜像.png


$ time docker build -t beforecaching .

澳门金沙国际 19

构建beforecaching花了1m23s.png


#################为了增强该编译速度,于是从头搭建apt-cacher-ng缓存代理
小编本地互连网架构图

澳门金沙国际 20

小编本地互连网图

(在另一台主机192.168.1.88上执行命令举行代理
也得以在宿主机上执行,只是私家认为效果不大)
$ docker run -d -p 3142:3142 sameersbn/apt-cacher-ng

澳门金沙国际 21

apt-cacher-ng运行在192.168.1.88主机上 而dockerhost宿主机为192.168.1.100
用88用作代理主机.png

假定想构建原生的air-cacher-ng
可以看这里.


################修改往日的Dockerfile文件,添加代理路径
vim Dockerfile


FROM hub.c.163.com/netease_comb/debian:7.9
MAINTAINER cai980273879
#################添加了这一行
RUN echo Acquire::http {
Proxy”

RUN apt-get update &&
apt-get install -y nginx

EXPOSE 22 80 443

ENTRYPOINT /etc/init.d/nginx start && /usr/sbin/sshd -D


澳门金沙国际 22

修改后的dockerfile.png

起首施行打造:
$ time docker build -t aftercaching .

澳门金沙国际 23

累加代办cachering后的主机缓存时间为0m37s.png

#############可知通过拔取代理,得到6.5倍的进程提升。
作者那里用的是163的镜像,由于是国内镜像,比较海外镜像速度不会升级多少(只提高了30s)
任何代理的不二法门有:Sonatype:Maven,Ruby,PyPi,NuGet的依赖包缓存
Polipo:通用代理缓存
Squid:较为流行的代理缓存
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx题外话xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
总共有三种方式可以举办缓存代理 本文接纳的是首先种办法
1.添加一个apt代理设置echo ‘Acquire::http { Proxy
“http://dockerhost:3142”;
};’ >> /etc/apt/conf.d/01proxy
如:RUN echo Acquire::http {
Proxy”http://dockerhost:3142″;};>/etc/apt/apt.conf.d/01proxy

2.设置环境变量:http_proxy=http://dockerhost:3142/
如: docker run –rm -t -i -e
http_proxy=http://dockerhost:3142/
debian bash

3.改动你的sources.list来起始http://dockerhost:3142/


创设进度实质上是将你所写的dockerfile一步一步的独自开展实践,并且在每一步提交后会生成一个新的镜像,直至完结末段一步未来,会输出一个末段镜像的ID。

 

下一场回车,执行build如下图,只要求等待build所有进程一鼓作气即可。

那就是说哪些写dockerfile呢?
首先须求领会一下dockerfile的中坚命令

三、实验步骤

澳门金沙国际 24

From

Usage: FROM [image name]
DockerFile第一条必须为From指令,指定引用的镜像。如若同一个DockerFile创设多少个镜像时,可选拔多个From指令(每个镜像两回)

  1. 执行命令,顺序如下

 

MAINTAINER

Usage: MAINTAINER [name]
本条命令用于表明小编,并应该置身FROM的末尾

# 查看本地的Docker镜像

最后,查看自己成立的镜像,使用如下命令(可以加参数过滤其他镜像)

RUN

Usage: RUN [command]
接受命令作为参数并用以制造镜像。不像CMD命令,RUN命令用于创设镜像(在前头commit的层以上形成新的层)。

root >> docker images

root >>> docker images

CMD

Usage 1: CMD application “argument”, “argument”, ..
和RUN命令相似,CMD可以用来执行一定的下令。和RUN分化的是,那几个命令不是在镜像营造的进度中执行的,而是在用镜像创设容器后被调用。

# 执行docker build命令,创造镜像,

 

EXPOSE

Usage: EXPOSE [port]
EXPOSE用来指定端口,使容器内的施用可以通过端口和外侧交互。

# 注意:build命令结尾有个完工符号
英文句号“.”,不要遗忘,否则执行会提示错误少个参数。

依附代码,如下地址(下载后,请记得修改文件后缀.sh为.dockerignore)

ENV

Usage: ENV key value
ENV命令用于安装环境变量。这么些变量以”key=value”的花样存在,并可以在容器内被剧本或者程序调用。那个机制给在容器中运行应用带来了庞大的惠及。

root >> docker build -f
“/opt/command/kevin_docker_files/01_nginx/Dockerfile/kevin_nginx_dockerfile.dockerignore”
-t “nginx/kevin.tian”
.

ADD

Usage: ADD [source directory or URL] [destination directory]
那一个命令的骨干成效是从源系统的文件系统上复制文件到目标容器的文件系统。若是源是一个URL,那该URL的情节将被下载并复制到容器中。

 

 

ENTRYPOINT

Usage: ENTRYPOINT application “argument”, “argument”, ..
布局容器启动后实施的下令,并且不可被 docker run 提供的参数覆盖。
ENTRYPOINT
接济你安顿一个器皿使之可执行化,假若您结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而单单保留参数,参数将传递给ENTRYPOINT命令。
种种 Dockerfile 中只好有一个
ENTRYPOINT,当指定三个时,唯有最终一个起效。

四、实验结果

若是对您有帮忙,请帮自己点赞,各位的支撑也是我创作的引力,谢谢

COPY

Usage: COPY [source directory or URL] [destination directory]
复制本地主机的 (为Dockerfile所在目录的相对路径)到容器中的 。

澳门金沙国际 25

VOLUME

Usage: VOLUME [“/dir_1”, “/dir_2” ..]
VOLUME命令用于让您的容器访问宿主机上的目录

 

USER

Usage: USER [UID]
USER命令用于安装运行容器的UID。

WORKDIR

Usage: WORKDIR /path
WORKDIR命令用于安装CMD指明的一声令下的运作目录

ONBUILD

Usage: ONBUILD [INSTRUCTION]
布署当所开创的镜像作为任何新制造镜像的功底镜像时,所推行的操作指令

此地做一个创设和谐的nginx镜像的dockerfile演示

[root@localhost ~]# mkdir dockerfile
[root@localhost ~]# cd dockerfile/
[root@localhost dockerfile]# vim Dockerfile
FROM centos
MAINTAINER by hyhy
RUN yum install -y  epel-release
RUN yum install -y  nginx
EXPOSE 80
ENTRYPOINT systemctl start nginx && tailf /usr/local/nginx/logs/error.log
[root@localhost dockerfile]# docker build -t nginx_my:centos .
Step 1/6 : FROM centos
 ---> 2d194b392dd1
Step 2/6 : MAINTAINER by hyhy
 ---> Running in cbd47b6555e2
Removing intermediate container cbd47b6555e2
 ---> 625ef0f2b8f7
Step 3/6 : RUN yum install -y  epel-release
 ---> Running in 01e6f401252e
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
 * base: mirrors.cn99.com
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-9 will be installed
--> Finished Dependency Resolution
...
Dependencies Resolved
...
Installed:
  epel-release.noarch 0:7-9                                                     

Complete!
Removing intermediate container 01e6f401252e
 ---> 2a8bf13b1f05
Step 4/6 : RUN yum install -y  nginx
 ---> Running in 3b0eb58cf811
Loaded plugins: fastestmirror, ovl
https://linuxmirrors.ir/pub/epel/7/x86_64/repodata/2331fa699fd272785aad9dd629482586ceb0706e4fdd2447276e791c6921e172-updateinfo.xml.bz2: [Errno 14] HTTPS Error 404 - Not Found
Trying other mirror.
To address this issue please refer to the below wiki article 

https://wiki.centos.org/yum-errors

If above article doesn't help to resolve this issue please use https://bugs.centos.org/.

Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
...
Installed:
  nginx.x86_64 1:1.12.2-1.el7                                                   
...
Complete!
Removing intermediate container 3b0eb58cf811
 ---> 9f2c5eee3470
Step 5/6 : EXPOSE 80
 ---> Running in 35a4d9a23074
Removing intermediate container 35a4d9a23074
 ---> 43335a444c08
Step 6/6 : ENTRYPOINT systemctl start nginx && tailf /usr/local/nginx/logs/error.log
 ---> Running in 3b31ab41740e
Removing intermediate container 3b31ab41740e
 ---> 43e745e08973
Successfully built 43e745e08973
Successfully tagged nginx_my:centos

创制完了,简单看一下,404M,官方的镜像唯有109M,假使是源码安装的话应该会小很多,其余就是合法的Nginx镜像中少了不少下令,包含netstat和ps之类的都是绝非的,可以算得相当概括。

[root@localhost dockerfile]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
nginx_my                               centos              43e745e08973        2 minutes ago       404MB
centos                                 latest              2d194b392dd1        3 days ago          195MB
busybox                                latest              f6e427c148a7        8 days ago          1.15MB
mysql                                  latest              5d4d51c57ea8        10 days ago         374MB
registry.docker-cn.com/library/nginx   latest              e548f1a579cf        2 weeks ago         109MB
hello-world                            latest              f2a91732366c        3 months ago        1.85kB

启动一下,看看能或不能够用

[root@localhost dockerfile]# docker run -i -t -p 80:80 43e745e08973 /bin/bash
Failed to get D-Bus connection: Operation not permitted

越发荣幸,大家相遇难题了,那一个题材是centos镜像存在的标题,那一个的案由是因为dbus-daemon没能启动。其实systemctl并不是不得以应用。将您的CMD或者entrypoint设置为/usr/sbin/init即可。会自动将dbus等劳动启动起来。
而是大家那边完全可以不用systemctl,大家得以用/usr/sbin/nginx
那么大家修改一下大家的dockerfile

[root@localhost dockerfile]# vim Dockerfile
FROM centos
MAINTAINER by hyhy
RUN yum install -y  epel-release && yum clean all
RUN yum install -y  nginx && yum clean all
EXPOSE 80
CMD ["/usr/sbin/init"] 
[root@localhost dockerfile]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
mynginx                                centos              a4e95eb48cbd        23 minutes ago      404MB
centos                                 latest              2d194b392dd1        3 days ago          195MB
busybox                                latest              f6e427c148a7        8 days ago          1.15MB
mysql                                  latest              5d4d51c57ea8        10 days ago         374MB
registry.docker-cn.com/library/nginx   latest              e548f1a579cf        2 weeks ago         109MB
hello-world                            latest              f2a91732366c        3 months ago        1.85kB
[root@localhost dockerfile]# docker run -i -t -d -p 80:80 a4e95eb48cbd /bin/bash
ec138dcf120f17072573750d7b8365c82c31adb05180db33705e537711a53bcb
[root@localhost dockerfile]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                NAMES
ec138dcf120f        a4e95eb48cbd        "/bin/bash"         About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   confident_kirch
cf2c588a7b30        centos              "/bin/bash"         2 hours ago          Up 2 hours                               nifty_yonath
[root@localhost dockerfile]# docker run -i -t -d -p 8080:80 a4e95eb48cbd /bin/bash -c "systemctl start nginx"
0cfcba85f49ae81ca8125d8c5d46db0d328e92a640148ab9f6f987dfc335f8a6

是因为这一次修改的dockerfile,没有参与启动Nginx,那里再度创设一个镜像

[root@localhost dockerfile]# vim Dockerfile
FROM centos
MAINTAINER by hyhy
RUN yum -y install epel-release && yum clean all
RUN yum -y install nginx && yum clean all
EXPOSE 80
CMD ["/usr/sbin/nginx”,“ -g”, “daemon off”]
[root@localhost dockerfile]# docker build -t nginx:2 .
[root@localhost dockerfile]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED              SIZE
nginx                                  1                   f31a08eb3bee        About a minute ago   286MB
centos                                 latest              2d194b392dd1        6 days ago           195MB
busybox                                latest              f6e427c148a7        11 days ago          1.15MB
mysql                                  latest              5d4d51c57ea8        13 days ago          374MB
registry.docker-cn.com/library/nginx   latest              e548f1a579cf        2 weeks ago          109MB
hello-world                            latest              f2a91732366c        3 months ago         1.85kB
[root@localhost dockerfile]# docker run -itd -p 8080:80 nginx:1 /bin/bash 
f61fe8c1b847e7b8ff30dbff34be1ddbb5337ff1a6d13dcaf302c0aac9797946
[root@localhost dockerfile]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
f61fe8c1b847        nginx:1             "/bin/bash"         3 seconds ago       Up 2 seconds        0.0.0.0:8080->80/tcp   epic_ride
cf2c588a7b30        centos              "/bin/bash"         3 days ago          Up 3 days                                  nifty_yonath

如若到这一步你和自身一起的话,你可以品尝curl
127.0.0.1:8080,应该是足以看来nginx的页面的。
此处终于成功的完结了既定的目的,然则此地也是有点小标题,就是CMD和ENTRYPOINT,那里仍然有点傻傻分不清楚怎么用
标志一下那一点过后继续啄磨一下。

相关文章