Docker命令之二,Docker质量优化

by admin on 2019年4月19日

壹、测试环境

    dockerfile,
重假诺四片段构成:基础镜像信息、维护者信息、镜像操作指令、容器运维实施命令。

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

民用感到 编写翻译时所消费的光阴很超越5二%都是花在
更新镜像源这块(即得到上游镜像的进程中),特别是选取官方源(海外源)小编等的连死的心都有了-_-

OS version: CentOS Linux release 7.5.1804 (Core)

 

[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配置

从镜像获取角度

#######书中关系,当需求在本土区别的宿主机中安插一样的镜像,假若分主机八个三个从dockerhub上下载是对事情未有什么帮助的,故选择了上一节的私人registry仓库铺排,从而完成1回下载举办分配而无需多次下载。

安排本地registry文件位置
ubuntu主机的docker.service文件地方为:/etc/default/docker/
centos主机的docker.service文件地点为:/etc/sycconfig/docker
搭建本地registry能够看自个儿的文章.

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

home88一必发 1

这是小编从另1台docker主机下载本地registry镜像的光阴

假使sha25陆值,即镜像同样时无须下载

home88一必发 2

一如既往sha25陆为:二daa一d3四f70633玖八edaff5b陆柒c无须下载

docker cluster : master 1 + data node 4

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

docker
build是可怜关键的二个功力,你能够用它来制作出适合您自个儿需求的镜像
由于地下镜像的安全性不可能获得有限帮忙,而笔者辈又真正须要一些特殊功效的镜像,由此大家得以采用Dockerfile,创造3个方可有限支撑安全性的镜像

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

  • 变动语序以复用缓存
  • 减掉构建上下文大小
  • 使用缓存代理

docker version: 1.13.1

home88一必发 3

因此本文第3个要讲的便是dockerfile
dockerfile能够起头的精通为是docker的脚本,通过那么些剧本你能够将原先贰个单独的种类镜像加入过多投机须求的软件。
dockerfile文件是三个由1两种构建指令组成的文件文件,docker
build命令会依据那几个创设指令达成docker镜像的创设。

变动dockerfile语序以复用缓存(就要dockerfile中带有update或然install的讲话提前)

问询过dockerfile原理的婴孩们都领会:当大家在营造Dockerfile时,docker会检查dockerfile中正在处理的吩咐,推断在它的缓存机制中是还是不是留存能够复用的镜像,而不是重复创制3个1律的镜像。通过改造语句如“RUN
apt-get update”可能”RUN bundle install”或然“RUN yum -y
update”等立异程序包等语句,对正视库实行二遍操作而为重复操作。在大部情况下。我们立异的只是应用程序中的大旨部分。
书中涉及的是ruby的bundle更新,那里跟着书上同样进行试验:
$ mkdir ~/rubyapp
$ cd ~/rubyapp
然后需求创立八个文件
$vim config.ru


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

home88一必发 4

config.ru文件



$vim Gemfile
source
‘Docker命令之二,Docker质量优化。https://gems.ruby-china.org/’

gem ‘rack’
gem ‘nokogiri’

home88一必发 5

Gemfile文件


$ vim Dockerfile
FROM ruby:2.2.2

ADD . /app
WORKDIR /app
RUN bundle install

EXPOSE 9292
CMD rackup -E none

home88一必发 6

Dockerfile文件


home88一必发 7

当前目录有八个公文

执行$ time docker build -t showdependencies .

home88一必发 8

消费了贴近叁分钟

###########明天修改config.ru文件的内容更动应用程序的魔法
$vim config.ru


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


home88一必发 9

只是退换了一条龙!!

在那边只是增多了“other”

home88一必发 10

只是改变了一行语句!!

#######能够发现:就算有1行代码发生了改观,可是依然需求在开立镜像的长河中为Docker镜像的每二遍迭代实践bundle
install命令,那样是很没用的~~~
书中涉嫌,为了优化,大家改造语序,#########将准备应用程序依赖的翻新部分的阶段从整个应用程序镜像架构中脱离出去

 

然后记得:wq保存和剥离vi。

Docker命令之二,Docker质量优化。表明:营造会在Docker后台守护进度(daemon)中推行,而不是CLI中。创设前,塑造进度会将全体内容(递归)发送到守护进度。多数情状下,应该将四个空目录作为构建上下文环境,并将Dockerfile文件放在该目录下。

改换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


home88一必发 11

原本的dockerfile

home88一必发 12

现在的dockerfile文件

率先施行dockerfile进行创设,时间应该和事先的差不离同样
$ time docker build -t showdependencies .

home88一必发 13

修改后的Dockerfile创设

###########明天连任修改config.ru文件的内容更动应用程序的效益,+多少个other随意
$vim config.ru


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


home88一必发 14

修改config.ru重新创设镜像,天啊撸!速度快得惊心动魄!

home88一必发 15

那正是速度!

#########不得不提的是,从输出的记录能够看到,docker
build复用了Steps叁中的缓存,这是因为对于Gemfile文件并从未改观

二、材质准备

 

在创设上下文中使用的Dockerfile文件,是多个营造指令文件。为了抓好创设品质,能够通过.dockerignore文件排除上下文目录下,不必要的文本和目录。

Docker镜像的编写翻译时间降低了约80倍
  1. dockerfile 文件,如下

step 二: 创设dockerfile镜像文件

命令为:

纪事,将更新语句集结到Dockerfile最前段,可使得节约修改后营造的年月


</br>

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

备注:最终加三个空格,3个英文句号,OK

docker build -f Dockerfile_PATH .
也能够到场-t参数钦点创设后的镜像名称、标签

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

减去营造上下文大小(即选用dockerignore忽略一些文书)

home88一必发 16

存在那样的3个文件夹

书中涉及:假若大家在依照Git版本调整管理中有3个dockerfile文件,在眼下文件夹中留存一个1001M轻重缓急的.git文件。当编写翻译Docker镜像时会发现时间卓殊久,原因是在编译时docker客户端上传了全部.git文件夹,而单单是因为它在镜像的编写翻译路线下!!!于是Docker守护进程花了多量的岁月来接收那有的剧情。
########不得不提的是,这个.git文件内容对于编写翻译dockerfile镜像是无益的!那个Git相关的文书对此在生产条件中的应用是行不通的,因而大家设定Docker去忽略掉一部分文件:使用.dockerignore
于是乎在当前目录创造一个.dockerignore文件,参预以下内容:
.git

home88一必发 17

add .dockerignore

然后再一次编写翻译镜像您回发现docker镜像编写翻译的时日分明缩水!!
########编写翻译时间至少提高了500倍以上, 同时削减了编译内容的深浅
*(注:此处多处引用原版的书文,望原来的书文小编不要怪罪>_<)


# 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
.

营造进度实质上是将您所写的dockerfile一步一步的单独开始展览施行,并且在每一步提交后会生成一个新的镜像,直至达成最后一步未来,会输出三个最终镜像的ID。

使用缓存代理(即选取信赖包代理工科具备效减短编写翻译指令所消耗的时间)

书中涉嫌,1个依照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

home88一必发 18

今日头条蜂巢nginx镜像.png


$ time docker build -t beforecaching .

home88一必发 19

构建beforecaching花了1m23s.png


#################为了进步该编写翻译速度,于是从头搭建apt-cacher-ng缓存代理
小编本地网络架构图

home88一必发 20

笔者本地互连网图

(在另1台主机1玖二.168.一.8八上推行命令实行代理
也得以在宿主机上试行,只是私人住房认为效果十分的小)
$ docker run -d -p 3142:3142 sameersbn/apt-cacher-ng

home88一必发 21

apt-cacher-ng运营在1玖二.16八.1.88主机上 而dockerhost宿主机为1玖二.16八.1.十0
用8⑧用作代理主机.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


home88一必发 22

修改后的dockerfile.png

初始施行营造:
$ time docker build -t aftercaching .

home88一必发 23

丰裕代理cachering后的主机缓存时间为0m三7s.png

#############足见通过使用代理,获得陆.5倍的快慢升高。
作者那里用的是1陆三的镜像,由于是国内镜像,比较海外镜像速度不会晋级多少(只进步了30s)
别的轮代理公司理的法子有:Sonatype:Maven,Ruby,PyPi,NuGet的依靠包缓存
Polipo:通用代理缓存
Squid:较为流行的代办缓存
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx题外话xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
计算有三种方法能够开始展览缓存代理 本文选择的是首先种艺术
一.增加多个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

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

三.修改你的sources.list来起始http://dockerhost:3142/


 

接下来回车,实施build如下图,只必要拭目以俟build全部进程做到就可以。

那么哪些写dockerfile呢?
首先需求理解一下dockerfile的主导命令

3、实验步骤

home88一必发 24

From

Usage: FROM [image name]
DockerFile第3条必须为From指令,钦点引用的镜像。假若同2个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]
以此命令的骨干职能是从源系统的文件系统上复制文件到对象容器的文件系统。假如源是三个UCR-VL,那该USportageL的剧情将被下载并复制到容器中。

 

 

ENTRYPOINT

Usage: ENTRYPOINT application “argument”, “argument”, ..
配备容器运营后实践的一声令下,并且不可被 docker run 提供的参数覆盖。
ENTLANDYPOINT
帮助您布置一个容器使之可实行化,如若你结合CMD命令和ENTENVISIONYPOINT命令,你能够从CMD命令中移除“application”而1味保留参数,参数将传递给ENT途锐YPOINT命令。
各种 Dockerfile 中只好有二个ENT奥德赛YPOINT,当钦点三个时,唯有最后3个起效。

四、实验结果

借使对你有支持,请帮本身点赞,各位的支撑也是自个儿撰文的重力,多谢

COPY

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

home88一必发 25

VOLUME

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

 

USER

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

WORKDIR

Usage: WORKDIR /path
WOMuranoKDIRAV四命令用于安装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

制作完了,轻松看一下,40四M,官方的镜像只有十玖M,假如是源码安装的话应该会小好些个,此外正是法定的Nginx镜像中少了无数命令,包罗netstat和ps之类的都以向来不的,能够视为10分简易。

[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

借使到这一步你和自个儿1块的话,你能够品尝curl
12七.0.0.一:8080,应该是足以看出nginx的页面包车型大巴。
那边算是成功的产生了既定的对象,不过此地也是有点小标题,正是CMD和ENT景逸SUVYPOINT,那里依然有点傻傻分不清楚怎么用
标记一下这一点未来继续钻探一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图