docker镜像构建详细说明

—> Package iproute.x86_64 0:4.11.0-30.el7 will be installed

–> Processing Dependency: libmnl.so.0(LIBMNL_1.0)(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Processing Dependency: libxtables.so.10()(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Processing Dependency: libmnl.so.0()(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Running transaction check

—> Package iptables.x86_64 0:1.4.21-35.el7 will be installed

–> Processing Dependency: libnfnetlink.so.0()(64bit) for package: iptables-1.4.21-35.el7.x86_64

–> Processing Dependency: libnetfilter_conntrack.so.3()(64bit) for package: iptables-1.4.21-35.el7.x86_64

—> Package libmnl.x86_64 0:1.0.3-7.el7 will be installed

–> Running transaction check

—> Package libnetfilter_conntrack.x86_64 0:1.0.6-1.el7_3 will be installed

—> Package libnfnetlink.x86_64 0:1.0.1-4.el7 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

iproute x86_64 4.11.0-30.el7 base 805 k

Installing for dependencies:

iptables x86_64 1.4.21-35.el7 base 432 k

libmnl x86_64 1.0.3-7.el7 base 23 k

libnetfilter_conntrack x86_64 1.0.6-1.el7_3 base 55 k

libnfnetlink x86_64 1.0.1-4.el7 base 26 k

Transaction Summary

================================================================================

Install 1 Package (+4 Dependent packages)

Total download size: 1.3 M

Installed size: 3.5 M

Downloading packages:


Total 1.8 MB/s | 1.3 MB 00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : libmnl-1.0.3-7.el7.x86_64 1/5

Installing : libnfnetlink-1.0.1-4.el7.x86_64 2/5

Installing : libnetfilter_conntrack-1.0.6-1.el7_3.x86_64 3/5

Installing : iptables-1.4.21-35.el7.x86_64 4/5

Installing : iproute-4.11.0-30.el7.x86_64 5/5

Verifying : libnfnetlink-1.0.1-4.el7.x86_64 1/5

Verifying : libnetfilter_conntrack-1.0.6-1.el7_3.x86_64 2/5

Verifying : iptables-1.4.21-35.el7.x86_64 3/5

Verifying : libmnl-1.0.3-7.el7.x86_64 4/5

Verifying : iproute-4.11.0-30.el7.x86_64 5/5

Installed:

iproute.x86_64 0:4.11.0-30.el7

Dependency Installed:

iptables.x86_64 0:1.4.21-35.el7

libmnl.x86_64 0:1.0.3-7.el7

libnetfilter_conntrack.x86_64 0:1.0.6-1.el7_3

libnfnetlink.x86_64 0:1.0.1-4.el7

Complete!

Removing intermediate container 69691bc80819

—> 443471b80ff2

Step 5/5 : CMD [“/bin/bash”]

—> Running in 7135ecfff344

Removing intermediate container 7135ecfff344

—> 4105c41a4cc1

Successfully built 4105c41a4cc1

Successfully tagged centos:v1

  • 编译完成以后可以通过查看镜像看到我们制作的这个镜像了

然后查看详细可以看到 前4项就是我们自定义的内容了

[root@ccx ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos v1 4105c41a4cc1 About a minute ago 433MB

nginx latest d1a364dc548d 3 weeks ago 133MB

hub.c.163.com/library/wordpress latest dccaeccfba36 3 years ago 406MB

hub.c.163.com/library/centos latest 328edcd84f1b 3 years ago 193MB

hub.c.163.com/library/mysql latest 9e64176cd8a2 4 years ago 407MB

[root@ccx ~]#

[root@ccx ~]# docker history centos:v1

IMAGE CREATED CREATED BY SIZE COMMENT

4105c41a4cc1 3 minutes ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0B

443471b80ff2 3 minutes ago /bin/sh -c yum install iproute -y 121MB

652b957f8a8b 3 minutes ago /bin/sh -c yum install net-tools -y 119MB

cf8f1b1f7f64 4 minutes ago /bin/sh -c #(nop) MAINTAINER ccx 0B

328edcd84f1b 3 years ago /bin/sh -c #(nop) CMD [“/bin/bash”] 0B

3 years ago /bin/sh -c #(nop) LABEL name=CentOS Base Im… 0B

3 years ago /bin/sh -c #(nop) ADD file:63492ba809361c51e… 193MB

[root@ccx ~]#

  • 现在通过这个镜像生成容器测试

可以看到这个镜像中这2命令确实有了

[root@ccx ~]# docker run -it --rm centos:v1

[root@0508e306c79d /]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

[root@0508e306c79d /]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255

ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)

RX packets 6 bytes 516 (516.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

loop txqueuelen 1000 (Local Loopback)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@0508e306c79d /]#

编辑镜像文件【注意事项说明】

  • 上面的Dockerfile配置文件中,每多写一个RUN,所生成的镜像都会多一层layer,这样就会导致生成的镜像很大,所以我们尽可能的只写一个RUN让这些命令全部实现,所以修改后如下咯。

  • 我们可以将Dockerfile文件修改为如下

&&是与的意思,就是前面执行完了执行后面的命令, \是换行的意思【后面不能有空格哈】,如果有很多命令需要执行,则加很多 && \就是了【这样是为了美观】

[root@ccx ~]# cat Dockerfile

FROM hub.c.163.com/library/centos

MAINTAINER ccx

RUN yum install net-tools -y && \

yum install iproute -y

CMD [“/bin/bash”]

[root@ccx ~]#

  • 然后我们重新生成一个 centos:v2版本

docker build -t centos:v2 .

过程如下

[root@ccx ~]# docker build -t centos:v2 .

Sending build context to Docker daemon 1.177GB

Step 1/4 : FROM hub.c.163.com/library/centos

—> 328edcd84f1b

Step 2/4 : MAINTAINER ccx

—> Using cache

—> cf8f1b1f7f64

Step 3/4 : RUN yum install net-tools -y && yum install iproute -y

—> Running in 4ed42d93dd76

Loaded plugins: fastestmirror, ovl

Determining fastest mirrors

  • base: mirrors.aliyun.com

  • extras: mirrors.aliyun.com

  • updates: mirrors.aliyun.com

Resolving Dependencies

–> Running transaction check

—> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k

Transaction Summary

================================================================================

Install 1 Package

Total download size: 306 k

Installed size: 917 k

Downloading packages:

warning: /var/cache/yum/x86_64/7/base/packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Public key for net-tools-2.0-0.25.20131004git.el7.x86_64.rpm is not installed

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Importing GPG key 0xF4A80EB5:

Userid : “CentOS-7 Key (CentOS 7 Official Signing Key) security@centos.org

Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5

Package : centos-release-7-3.1611.el7.centos.x86_64 (@CentOS)

From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1

Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1

Installed:

net-tools.x86_64 0:2.0-0.25.20131004git.el7

Complete!

Loaded plugins: fastestmirror, ovl

Loading mirror speeds from cached hostfile

  • base: mirrors.aliyun.com

  • extras: mirrors.aliyun.com

  • updates: mirrors.aliyun.com

Resolving Dependencies

–> Running transaction check

—> Package iproute.x86_64 0:4.11.0-30.el7 will be installed

–> Processing Dependency: libmnl.so.0(LIBMNL_1.0)(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Processing Dependency: libxtables.so.10()(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Processing Dependency: libmnl.so.0()(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Running transaction check

—> Package iptables.x86_64 0:1.4.21-35.el7 will be installed

–> Processing Dependency: libnfnetlink.so.0()(64bit) for package: iptables-1.4.21-35.el7.x86_64

–> Processing Dependency: libnetfilter_conntrack.so.3()(64bit) for package: iptables-1.4.21-35.el7.x86_64

—> Package libmnl.x86_64 0:1.0.3-7.el7 will be installed

–> Running transaction check

—> Package libnetfilter_conntrack.x86_64 0:1.0.6-1.el7_3 will be installed

—> Package libnfnetlink.x86_64 0:1.0.1-4.el7 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

iproute x86_64 4.11.0-30.el7 base 805 k

Installing for dependencies:

iptables x86_64 1.4.21-35.el7 base 432 k

libmnl x86_64 1.0.3-7.el7 base 23 k

libnetfilter_conntrack x86_64 1.0.6-1.el7_3 base 55 k

libnfnetlink x86_64 1.0.1-4.el7 base 26 k

Transaction Summary

================================================================================

Install 1 Package (+4 Dependent packages)

Total download size: 1.3 M

Installed size: 3.5 M

Downloading packages:


Total 1.6 MB/s | 1.3 MB 00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : libmnl-1.0.3-7.el7.x86_64 1/5

Installing : libnfnetlink-1.0.1-4.el7.x86_64 2/5

Installing : libnetfilter_conntrack-1.0.6-1.el7_3.x86_64 3/5

Installing : iptables-1.4.21-35.el7.x86_64 4/5

Installing : iproute-4.11.0-30.el7.x86_64 5/5

Verifying : libnfnetlink-1.0.1-4.el7.x86_64 1/5

Verifying : libnetfilter_conntrack-1.0.6-1.el7_3.x86_64 2/5

Verifying : iptables-1.4.21-35.el7.x86_64 3/5

Verifying : libmnl-1.0.3-7.el7.x86_64 4/5

Verifying : iproute-4.11.0-30.el7.x86_64 5/5

Installed:

iproute.x86_64 0:4.11.0-30.el7

Dependency Installed:

iptables.x86_64 0:1.4.21-35.el7

libmnl.x86_64 0:1.0.3-7.el7

libnetfilter_conntrack.x86_64 0:1.0.6-1.el7_3

libnfnetlink.x86_64 0:1.0.1-4.el7

Complete!

Removing intermediate container 4ed42d93dd76

—> 7e5ab683bf8b

Step 4/4 : CMD [“/bin/bash”]

—> Running in 60f0fa6c3965

Removing intermediate container 60f0fa6c3965

—> 6f27209158df

Successfully built 6f27209158df

Successfully tagged centos:v2

[root@ccx ~]#

  • 和基础使用创建结果对比

只有一个run以后镜像大小明显小了很多,下面TAG的v2是只有一个run创建的

[root@ccx ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos v2 6f27209158df 2 minutes ago 315MB

centos v1 4105c41a4cc1 13 minutes ago 433MB

  • 创建容器测试结果

ifconfig和ip a命令依然是有的。

[root@ccx ~]# docker run -it --rm centos:v2

[root@20f2597f6246 /]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255

ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)

RX packets 3 bytes 266 (266.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

loop txqueuelen 1000 (Local Loopback)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@20f2597f6246 /]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

20: eth0@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

[root@20f2597f6246 /]#

编辑镜像文件【ADD与COPY增加文件】


  • ADD和COPY的区别

  • ADDCOPY是作用是一样的,都是用于文件拷贝

  • ADD带有自动解压功能,适用于拷贝多个文件,拷贝前将这些文件打成一个tar包即可】

  • COPY没有自动解压功能,适用于拷贝单个文件,不用做任何操作【不需要打tar包操作】,但COPY也可以拷贝tar包到容器,只是容器里看到的依然是tar包,不会自动解压罢了。

  • 所以,如果文件多,打成tar包用ADD拷贝,如果仅有一个文件,则用COPY直接拷贝,他们的使用方法是一样的。

  • 这个依然是基于Dockerfile文件实现的功能。

  • ADD使用方法:ADD tar包文件名 路径 ,就是将指定文件拷贝到指定容器的路径里面

注:tar包文件必须和dockerfile在一个目录中

  • COPY使用方法:COPY 文件名 路径 ,就是将指定文件拷贝到指定容器的路径里面

注:需要拷贝的文件必须和dockerfile再在一个目录中

  • 如:我们将容器中的yum源替换为本机的yum源为例

我们先将本地的yum源打成tar包并放在和Dockerfile文件一个目录

[root@ccx ~]# cd /etc/yum.repos.d/

[root@ccx yum.repos.d]# ls

bak CentOS-Base.repo docker-ce.repo epel.repo k8s.repo

[root@ccx yum.repos.d]# tar zcf repo.tar.gz *.repo

[root@ccx yum.repos.d]# mv repo.tar.gz /root

mv: overwrite ‘/root/repo.tar.gz’? y

[root@ccx yum.repos.d]# cd /root

[root@ccx ~]# ls | grep rep

repo.tar.gz

[root@ccx ~]#

[root@ccx ~]# tar tf repo.tar.gz

CentOS-Base.repo

docker-ce.repo

epel.repo

k8s.repo

[root@ccx ~]#

  • 然后修改Dockerfile文件

添加文件之前需要先删除原来镜像中的源路径文件,所以需要先定义一个RUN用来删除文件,然后再这个文件下面 添加一个ADD,将文件拷贝到yum文件中【RUN分开的原因是需要先配置完毕yum才能使用yum install】

[root@ccx ~]# cat Dockerfile

FROM hub.c.163.com/library/centos

MAINTAINER ccx

RUN rm -rf /etc/yum.repos.d/*

ADD repo.tar.gz /etc/yum.repos.d/

RUN yum install net-tools -y && \

yum install iproute -y

CMD [“/bin/bash”]

[root@ccx ~]#

  • 上面文件保存后重新编译一次,名称为centos:v3,过程如下

[root@ccx ~]# yum build -t centos:v3 .

Loaded plugins: fastestmirror, langpacks

No such command: build. Please use /usr/bin/yum --help

[root@ccx ~]# docker build -t centos:v3 .

Sending build context to Docker daemon 1.177GB

Step 1/6 : FROM hub.c.163.com/library/centos

—> 328edcd84f1b

Step 2/6 : MAINTAINER ccx

—> Using cache

—> cf8f1b1f7f64

Step 3/6 : RUN rm -rf /etc/yum.repos.d/*

—> Running in 8eb8c344528c

Removing intermediate container 8eb8c344528c

—> e74a3061df3a

Step 4/6 : ADD repo.tar.gz /etc/yum.repos.d/

—> 80fe76f4a233

Step 5/6 : RUN yum install net-tools -y && yum install iproute -y

—> Running in 6277b3c234a9

Loaded plugins: fastestmirror, ovl

Retrieving key from https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

Importing GPG key 0x307EA071:

Userid : “Rapture Automatic Signing Key (cloud-rapture-signing-key-2021-03-01-08_01_09.pub)”

Fingerprint: 7f92 e05b 3109 3bef 5a3c 2d38 feea 9169 307e a071

From : https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

Retrieving key from https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

Determining fastest mirrors

Resolving Dependencies

–> Running transaction check

—> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k

Transaction Summary

================================================================================

Install 1 Package

Total download size: 306 k

Installed size: 917 k

Downloading packages:

warning: /var/cache/yum/x86_64/7/base/packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Public key for net-tools-2.0-0.25.20131004git.el7.x86_64.rpm is not installed

Retrieving key from http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

Importing GPG key 0xF4A80EB5:

Userid : “CentOS-7 Key (CentOS 7 Official Signing Key) security@centos.org

Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5

From : http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1

Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1

Installed:

net-tools.x86_64 0:2.0-0.25.20131004git.el7

Complete!

Loaded plugins: fastestmirror, ovl

Loading mirror speeds from cached hostfile

Resolving Dependencies

–> Running transaction check

—> Package iproute.x86_64 0:4.11.0-30.el7 will be installed

–> Processing Dependency: libmnl.so.0(LIBMNL_1.0)(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Processing Dependency: libxtables.so.10()(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Processing Dependency: libmnl.so.0()(64bit) for package: iproute-4.11.0-30.el7.x86_64

–> Running transaction check

—> Package iptables.x86_64 0:1.4.21-35.el7 will be installed

–> Processing Dependency: libnfnetlink.so.0()(64bit) for package: iptables-1.4.21-35.el7.x86_64

–> Processing Dependency: libnetfilter_conntrack.so.3()(64bit) for package: iptables-1.4.21-35.el7.x86_64

—> Package libmnl.x86_64 0:1.0.3-7.el7 will be installed

–> Running transaction check

—> Package libnetfilter_conntrack.x86_64 0:1.0.6-1.el7_3 will be installed

—> Package libnfnetlink.x86_64 0:1.0.1-4.el7 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

iproute x86_64 4.11.0-30.el7 base 805 k

Installing for dependencies:

iptables x86_64 1.4.21-35.el7 base 432 k

libmnl x86_64 1.0.3-7.el7 base 23 k

libnetfilter_conntrack x86_64 1.0.6-1.el7_3 base 55 k

libnfnetlink x86_64 1.0.1-4.el7 base 26 k

Transaction Summary

================================================================================

Install 1 Package (+4 Dependent packages)

Total download size: 1.3 M

Installed size: 3.5 M

Downloading packages:


Total 2.7 MB/s | 1.3 MB 00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : libmnl-1.0.3-7.el7.x86_64 1/5

Installing : libnfnetlink-1.0.1-4.el7.x86_64 2/5

Installing : libnetfilter_conntrack-1.0.6-1.el7_3.x86_64 3/5

Installing : iptables-1.4.21-35.el7.x86_64 4/5

Installing : iproute-4.11.0-30.el7.x86_64 5/5

Verifying : libnfnetlink-1.0.1-4.el7.x86_64 1/5

Verifying : libnetfilter_conntrack-1.0.6-1.el7_3.x86_64 2/5

Verifying : iptables-1.4.21-35.el7.x86_64 3/5

Verifying : libmnl-1.0.3-7.el7.x86_64 4/5

Verifying : iproute-4.11.0-30.el7.x86_64 5/5

Installed:

iproute.x86_64 0:4.11.0-30.el7

Dependency Installed:

iptables.x86_64 0:1.4.21-35.el7

libmnl.x86_64 0:1.0.3-7.el7

libnetfilter_conntrack.x86_64 0:1.0.6-1.el7_3

libnfnetlink.x86_64 0:1.0.1-4.el7

Complete!

Removing intermediate container 6277b3c234a9

—> 2b86e5699766

Step 6/6 : CMD [“/bin/bash”]

—> Running in 1e6ff2ac0399

Removing intermediate container 1e6ff2ac0399

—> 0212a1a45667

Successfully built 0212a1a45667

Successfully tagged centos:v3

[root@ccx ~]#

  • 创建容器测试

可以看到yum源文件已经边了,且命令已经安装成功了

[root@ccx ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos v3 0212a1a45667 3 minutes ago 357MB

centos v2 6f27209158df 27 minutes ago 315MB

centos v1 4105c41a4cc1 38 minutes ago 433MB

[root@ccx ~]# docker run -it --rm centos:v3

[root@020e9637b5e3 /]# ls /etc/yum.repos.d/

CentOS-Base.repo docker-ce.repo epel.repo k8s.repo

[root@020e9637b5e3 /]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255

ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)

RX packets 8 bytes 656 (656.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

loop txqueuelen 1000 (Local Loopback)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@020e9637b5e3 /]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

[root@020e9637b5e3 /]#

编辑镜像文件【EXPOSE指定端口】


  • 使用方法:EXPOSE 端口号1 端口号2 端口号3

  • 这个我们以nginx服务为例【镜像使用我们上面创建的centos:v3】

并且这个nginx的CMD文件比较特别,我们可以查看镜像现有的CMD,然后复制过去就行了

先查看到nginx镜像的CMD路径

[root@ccx ~]# docker history nginx:latest --no-trunc| head -n 2

IMAGE CREATED CREATED BY SIZE COMMENT

sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdee 3 weeks ago /bin/sh -c #(nop) CMD [“nginx” “-g” “daemon off;”] 0B

[root@ccx ~]#

  • 编辑一个新的dockerfile文件

我们可以拷贝一份刚才的docker模版,然后编辑如下内容【注,CMD中的内容需要将空格改为,】,最后在当前目录新建一个index.html【名称固定的,里面的内容可以随便造一点】

[root@ccx ~]# cp Dockerfile Dockerfile_v2

[root@ccx ~]# vim Dockerfile_v2

[root@ccx ~]# cat Dockerfile_v2

FROM centos:v3

MAINTAINER ccx

RUN yum install nginx -y

COPY index.html /usr/share/nginx/html

EXPOSE 80

CMD [“nginx”,“-g”,“daemon off;”]

[root@ccx ~]# vim index.html

[root@ccx ~]# cat index.html

hello word!

[root@ccx ~]#

  • 编译镜像为nginx:v1

因为我们新增的一个dockerfile文件,所以我们需要用 -f 指定文件名

docker build -t nginx:v1 . -f Dockerfile_v2

过程如下【如果镜像中没有nginx源,会编译错误】

[root@ccx ~]# docker build -t nginx:v1 . -f Dockerfile_v2

Sending build context to Docker daemon 1.177GB

Step 1/6 : FROM centos:v3

—> 0212a1a45667

Step 2/6 : MAINTAINER ccx

—> Running in 3c6429284bf7

Removing intermediate container 3c6429284bf7

—> 67508b852318

Step 3/6 : RUN yum install nginx -y

—> Running in 59dff0944913

Loaded plugins: fastestmirror, ovl

Loading mirror speeds from cached hostfile

Resolving Dependencies

–> Running transaction check

—> Package nginx.x86_64 1:1.20.1-2.el7 will be installed

–> Processing Dependency: nginx-filesystem = 1:1.20.1-2.el7 for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: nginx-filesystem for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: openssl for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: redhat-indexhtml for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: system-logos for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: libcrypto.so.1.1()(64bit) for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: libprofiler.so.0()(64bit) for package: 1:nginx-1.20.1-2.el7.x86_64

–> Processing Dependency: libssl.so.1.1()(64bit) for package: 1:nginx-1.20.1-2.el7.x86_64

–> Running transaction check

—> Package centos-indexhtml.noarch 0:7-9.el7.centos will be installed

—> Package centos-logos.noarch 0:70.0.6-3.el7.centos will be installed

—> Package gperftools-libs.x86_64 0:2.6.1-1.el7 will be installed

—> Package nginx-filesystem.noarch 1:1.20.1-2.el7 will be installed

—> Package openssl.x86_64 1:1.0.2k-21.el7_9 will be installed

–> Processing Dependency: openssl-libs(x86-64) = 1:1.0.2k-21.el7_9 for package: 1:openssl-1.0.2k-21.el7_9.x86_64

–> Processing Dependency: make for package: 1:openssl-1.0.2k-21.el7_9.x86_64

–> Processing Dependency: libcrypto.so.10(OPENSSL_1.0.2)(64bit) for package: 1:openssl-1.0.2k-21.el7_9.x86_64

—> Package openssl11-libs.x86_64 1:1.1.1g-3.el7 will be installed

–> Running transaction check

—> Package make.x86_64 1:3.82-24.el7 will be installed

—> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be updated

—> Package openssl-libs.x86_64 1:1.0.2k-21.el7_9 will be an update

–> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

nginx x86_64 1:1.20.1-2.el7 epel 586 k

Installing for dependencies:

centos-indexhtml noarch 7-9.el7.centos base 92 k

centos-logos noarch 70.0.6-3.el7.centos base 21 M

gperftools-libs x86_64 2.6.1-1.el7 base 272 k

make x86_64 1:3.82-24.el7 base 421 k

nginx-filesystem noarch 1:1.20.1-2.el7 epel 23 k

openssl x86_64 1:1.0.2k-21.el7_9 updates 493 k

openssl11-libs x86_64 1:1.1.1g-3.el7 epel 1.5 M

Updating for dependencies:

openssl-libs x86_64 1:1.0.2k-21.el7_9 updates 1.2 M

Transaction Summary

================================================================================

Install 1 Package (+7 Dependent packages)

Upgrade ( 1 Dependent package)

Total download size: 26 M

Downloading packages:

Delta RPMs disabled because /usr/bin/applydeltarpm not installed.


Total 4.9 MB/s | 26 MB 00:05

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : centos-logos-70.0.6-3.el7.centos.noarch 1/10

Installing : centos-indexhtml-7-9.el7.centos.noarch 2/10

Installing : 1:make-3.82-24.el7.x86_64 3/10

Installing : 1:nginx-filesystem-1.20.1-2.el7.noarch 4/10

Installing : 1:openssl11-libs-1.1.1g-3.el7.x86_64 5/10

Installing : gperftools-libs-2.6.1-1.el7.x86_64 6/10

Updating : 1:openssl-libs-1.0.2k-21.el7_9.x86_64 7/10

Installing : 1:openssl-1.0.2k-21.el7_9.x86_64 8/10

Installing : 1:nginx-1.20.1-2.el7.x86_64 9/10

Cleanup : 1:openssl-libs-1.0.1e-60.el7_3.1.x86_64 10/10

Verifying : 1:nginx-1.20.1-2.el7.x86_64 1/10

Verifying : 1:openssl-libs-1.0.2k-21.el7_9.x86_64 2/10

Verifying : gperftools-libs-2.6.1-1.el7.x86_64 3/10

Verifying : 1:openssl11-libs-1.1.1g-3.el7.x86_64 4/10

Verifying : 1:nginx-filesystem-1.20.1-2.el7.noarch 5/10

Verifying : 1:make-3.82-24.el7.x86_64 6/10

Verifying : 1:openssl-1.0.2k-21.el7_9.x86_64 7/10

Verifying : centos-indexhtml-7-9.el7.centos.noarch 8/10

Verifying : centos-logos-70.0.6-3.el7.centos.noarch 9/10

Verifying : 1:openssl-libs-1.0.1e-60.el7_3.1.x86_64 10/10

Installed:

nginx.x86_64 1:1.20.1-2.el7

Dependency Installed:

centos-indexhtml.noarch 0:7-9.el7.centos

centos-logos.noarch 0:70.0.6-3.el7.centos

gperftools-libs.x86_64 0:2.6.1-1.el7

make.x86_64 1:3.82-24.el7

nginx-filesystem.noarch 1:1.20.1-2.el7

openssl.x86_64 1:1.0.2k-21.el7_9

openssl11-libs.x86_64 1:1.1.1g-3.el7

Dependency Updated:

openssl-libs.x86_64 1:1.0.2k-21.el7_9

Complete!

Removing intermediate container 59dff0944913

—> f4aea8fab811

Step 4/6 : COPY index.html /usr/share/nginx/html

—> 64f0b3c15c5e

Step 5/6 : EXPOSE 80

—> Running in 00c9d88e2742

Removing intermediate container 00c9d88e2742

—> 8b6bd0688188

Step 6/6 : CMD [“nginx”,“-g”,“daemon off;”]

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

img

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
x86_64 1:1.1.1g-3.el7

Dependency Updated:

openssl-libs.x86_64 1:1.0.2k-21.el7_9

Complete!

Removing intermediate container 59dff0944913

—> f4aea8fab811

Step 4/6 : COPY index.html /usr/share/nginx/html

—> 64f0b3c15c5e

Step 5/6 : EXPOSE 80

—> Running in 00c9d88e2742

Removing intermediate container 00c9d88e2742

—> 8b6bd0688188

Step 6/6 : CMD [“nginx”,“-g”,“daemon off;”]

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-Ngk6U6f0-1711593301797)]

[外链图片转存中…(img-VDVlSYHU-1711593301797)]

[外链图片转存中…(img-ihWgl1iM-1711593301798)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

img

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

[外链图片转存中…(img-5jtu9lBm-1711593301798)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker镜像Docker容器的基础组件,它类似于虚拟机中的镜像文件,是一个可执行的二进制文件,包含了运行一个应用程序所需的所有组件,如操作系统、应用程序、库文件等。 Docker镜像是通过Dockerfile来构建的,Dockerfile是一个文本文件,其中包含了一系列指令,用于描述如何构建Docker镜像。通过Dockerfile所描述的指令,Docker可以自动化地构建出一个Docker镜像,并将其保存在Docker仓库中。 在使用Docker镜像时,可以通过Docker Hub上的公共仓库或自己的私有仓库来获取Docker镜像。一旦获取到了Docker镜像,就可以根据需要创建Docker容器,并在容器中运行应用程序。 Docker镜像具有以下几个特点: 1. 轻量级:Docker镜像只包含了运行应用所需的组件,不包含无关的组件,因此它非常轻量级,可以快速部署和移动。 2. 可移植性:Docker镜像可以在任意Docker容器中运行,无需担心底层操作系统和硬件的差异,因此具有很高的可移植性。 3. 可扩展性:可以通过基于Docker镜像的方式,快速构建出多个相同或不同的Docker容器,从而实现应用程序的快速扩展和部署。 4. 安全性:Docker镜像可以隔离应用程序和操作系统,从而提高了应用程序的安全性,同时也可以减少应用程序之间的干扰。 总之,Docker镜像Docker容器化技术的核心组成部分,它可以极大地简化应用程序的部署和移植过程,提高应用程序的可移植性、可扩展性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值