DOCKER学习_011:使用Dockerfile制作docker镜像
前面使用commit的方式,制作一个docker镜像,本次介绍使用Dockerfile制作一个dockers镜像
[root@docker-server3 ~]# mkdir /openssh
[root@docker-server3 ~]# cd /openssh
[root@docker-server3 openssh]# cp /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key /etc/ssh/ssh_host_rsa_key .
[root@docker-server3 openssh]# ll
-rw-r----- 1 root root 227 Dec 31 13:13 ssh_host_ecdsa_key
-rw-r----- 1 root root 387 Dec 31 13:13 ssh_host_ed25519_key
-rw-r----- 1 root root 1679 Dec 31 13:13 ssh_host_rsa_key
1 编辑Dockerfile文件
[root@docker-server3 openssh]# vim Dockerfile
FROM centos:7
LABEL darren darren@gmail.com RUN yum -y install openssh-server \
&& useradd natash \
&& echo "redhat"|passwd --stdin natash \
&& echo "redhat"|passwd --stdin root \
&& ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''\
&& ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' \
&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' ADD ssh_host_ecdsa_key /tmp/ssh_host_ecdsa_key
ADD ssh_host_ed25519_key /tmp/ssh_host_ed25519_key
ADD ssh_host_rsa_key /tmp/ssh_host_rsa_key CMD ["/usr/sbin/sshd", "-D"]
FROM表示下载基本镜像
LABEL作者信息
RUN 表示要执行的动作,相当于执行脚本,执行的是/bin/sh -c ***的动作
ADD表示复制文件
CMD表示执行一个命令
2 使用docker build构建镜像
[root@docker-server3 openssh]# docker build -t openssh:v1.3 .
Sending build context to Docker daemon 7.168kB
Step 1/7 : FROM centos:7
---> 5e35e350aded
Step 2/7 : LABEL darren darren@gmail.com
---> Running in e4326a6f6000
Removing intermediate container e4326a6f6000
---> eb19f72c1afd
Step 3/7 : RUN yum -y install openssh-server && useradd natash && echo "redhat"|passwd --stdin natash && echo "redhat"|passwd --stdin root && ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
---> Running in 41b40d14da2d
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: mirror.pregi.net
* extras: mirror.pregi.net
* updates: mirror.pregi.net
Resolving Dependencies
--> Running transaction check
---> Package openssh-server.x86_64 0:7.4p1-21.el7 will be installed
--> Processing Dependency: openssh = 7.4p1-21.el7 for package: openssh-server-7.4p1-21.el7.x86_64
--> Processing Dependency: fipscheck-lib(x86-64) >= 1.3.0 for package: openssh-server-7.4p1-21.el7.x86_64
--> Processing Dependency: libwrap.so.0()(64bit) for package: openssh-server-7.4p1-21.el7.x86_64
--> Processing Dependency: libfipscheck.so.1()(64bit) for package: openssh-server-7.4p1-21.el7.x86_64
--> Running transaction check
---> Package fipscheck-lib.x86_64 0:1.4.1-6.el7 will be installed
--> Processing Dependency: /usr/bin/fipscheck for package: fipscheck-lib-1.4.1-6.el7.x86_64
---> Package openssh.x86_64 0:7.4p1-21.el7 will be installed
---> Package tcp_wrappers-libs.x86_64 0:7.6-77.el7 will be installed
--> Running transaction check
---> Package fipscheck.x86_64 0:1.4.1-6.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved ================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
openssh-server x86_64 7.4p1-21.el7 base 459 k
Installing for dependencies:
fipscheck x86_64 1.4.1-6.el7 base 21 k
fipscheck-lib x86_64 1.4.1-6.el7 base 11 k
openssh x86_64 7.4p1-21.el7 base 510 k
tcp_wrappers-libs x86_64 7.6-77.el7 base 66 k Transaction Summary
================================================================================
Install 1 Package (+4 Dependent packages) Total download size: 1.0 M
Installed size: 3.0 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/fipscheck-1.4.1-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for fipscheck-1.4.1-6.el7.x86_64.rpm is not installed
--------------------------------------------------------------------------------
Total 446 kB/s | 1.0 MB 00:02
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-7.1908.0.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 : fipscheck-1.4.1-6.el7.x86_64 1/5
Installing : fipscheck-lib-1.4.1-6.el7.x86_64 2/5
Installing : openssh-7.4p1-21.el7.x86_64 3/5
Installing : tcp_wrappers-libs-7.6-77.el7.x86_64 4/5
Installing : openssh-server-7.4p1-21.el7.x86_64 5/5
Verifying : fipscheck-lib-1.4.1-6.el7.x86_64 1/5
Verifying : tcp_wrappers-libs-7.6-77.el7.x86_64 2/5
Verifying : fipscheck-1.4.1-6.el7.x86_64 3/5
Verifying : openssh-7.4p1-21.el7.x86_64 4/5
Verifying : openssh-server-7.4p1-21.el7.x86_64 5/5 Installed:
openssh-server.x86_64 0:7.4p1-21.el7 Dependency Installed:
fipscheck.x86_64 0:1.4.1-6.el7 fipscheck-lib.x86_64 0:1.4.1-6.el7
openssh.x86_64 0:7.4p1-21.el7 tcp_wrappers-libs.x86_64 0:7.6-77.el7 Complete!
Changing password for user natash.
passwd: all authentication tokens updated successfully.
Changing password for user root.
passwd: all authentication tokens updated successfully.
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.
The key fingerprint is:
SHA256:7LIsGt0osRc9JoEYjake8YD1pTcynqoUbep/IK7T2Xs root@41b40d14da2d
The key's randomart image is:
+---[DSA 1024]----+
|o=. . |
|+=.o o |
|o = * o |
|...o B o |
|..oo= + S |
| o+* * o |
|.+*o= o . |
|+oo+ooEo |
|+oooo+o |
+----[SHA256]-----+
Removing intermediate container 41b40d14da2d
---> 2be613021085
Step 4/7 : ADD ssh_host_ecdsa_key /tmp/ssh_host_ecdsa_key
---> c64f7dcda4c1
Step 5/7 : ADD ssh_host_ed25519_key /tmp/ssh_host_ed25519_key
---> 86e57a7a4313
Step 6/7 : ADD ssh_host_rsa_key /tmp/ssh_host_rsa_key
---> 2412a6e26b9c
Step 7/7 : CMD ["/usr/sbin/sshd", "-D"]
---> Running in e3e2df3ee1c8
Removing intermediate container e3e2df3ee1c8
---> 0244c59bf444
Successfully built 0244c59bf444
Successfully tagged openssh:v1.3
每一个step都会生成一个镜像层
在生成镜像层后,docker会自动识别,看是否有必要存在这个镜像层,如果没有必要,就会删除这个镜像层,如第二步:
Step 2/7 : LABEL darren darren@gmail.com
---> Running in e4326a6f6000
Removing intermediate container e4326a6f6000
3 查看镜像
发现新的镜像openssh:v1.3
[root@docker-server3 openssh]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
openssh v1.3 0244c59bf444 42 seconds ago 306MB
openssh v1.2 c399a750ed03 2 hours ago 361MB
openssh v1.0 d98ba06569f3 2 hours ago 361MB
nginx latest f7bb5701a33c 3 days ago 126MB
busybox latest 6d5fcfe5ff17 4 days ago 1.22MB
hub.darren.com/library/alpine 3.7 cc0abc535e36 7 days ago 5.59MB
centos 7 5e35e350aded 7 weeks ago 203MB
4 运行一个容器
[root@docker-server3 openssh]# docker run -d openssh:v1.3
fd2c629a2b3c067ecfa6ff601bf5a158f16087d40b16487e514688a125ab8f70
[root@docker-server3 openssh]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd2c629a2b3c openssh:v1.3 "/usr/sbin/sshd -D" 13 seconds ago Up 13 seconds
5 测试容器,检查镜像是否达到要求
[root@docker-server3 openssh]# docker inspect fd2c629a2b3c |grep IP
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "192.168.0.2",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"IPAMConfig": null,
"IPAddress": "192.168.0.2",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
ssh连接,测试openssh,并查看copy的文件
[root@docker-server3 openssh]# ssh root@192.168.0.2
The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established.
ECDSA key fingerprint is SHA256:j3tvwS9TpQzJVj3QN+SLescO3vpSiiT18bA1e12ZR+M.
ECDSA key fingerprint is MD5:5c:cc:e9:cf:3d:b7:9c:d3:fe:93:50:b6:0f:f6:27:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (ECDSA) to the list of known hosts.
root@192.168.0.2's password:
[root@fd2c629a2b3c ~]# ll /tmp/ssh*
-rw-r----- 1 root root 227 Dec 31 18:13 /tmp/ssh_host_ecdsa_key
-rw-r----- 1 root root 387 Dec 31 18:13 /tmp/ssh_host_ed25519_key
-rw-r----- 1 root root 1679 Dec 31 18:13 /tmp/ssh_host_rsa_key
[root@fd2c629a2b3c ~]# exit
logout
Connection to 192.168.0.2 closed.
[root@docker-server3 openssh]# ssh natash@192.168.0.2
natash@192.168.0.2's password:
[natash@fd2c629a2b3c ~]$ exit
logout
Connection to 192.168.0.2 closed.
说明镜像制作完成,后续在研究学习关于Dockerfile的语法
博主声明:本文的内容来源主要来自誉天教育晏威老师,由本人实验完成操作验证,需要的博友请联系誉天教育(http://www.yutianedu.com/),获得官方同意或者晏老师(https://www.cnblogs.com/breezey/)本人同意即可转载,谢谢!
DOCKER学习_011:使用Dockerfile制作docker镜像的更多相关文章
- Docker学习笔记三 Dockerfile 指令 定制镜像
本文地址:https://www.cnblogs.com/veinyin/p/10412079.html 镜像是分层存储的,每一层都是独立存在的,修改当前层并不会修改其依赖的上一层,删除某一层也只是 ...
- Docker之dockerfile制作jdk镜像
目的: Dockerfile简介 Dockerfile制作jdk镜像 Dockerfile简介 了解dockerfile之前要先了解Docker基本概念和使用可参考:https://www.cnblo ...
- Docker系列(24)- 实战:DockerFile制作tomcat镜像
实战:DockerFile制作tomcat镜像 step-1 准备镜像文件 tomcat压缩包,jdk压缩包! step-2 编写dockerfile文件,官方命名Dockerfile,build会自 ...
- Docker学习(三)认识Docker和常用命令
Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...
- 基于Dockerfile制作tomcat镜像
Docker 概述: 在前面的例子中,我们从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一种文件或脚本,我们把想执行的操 ...
- docker学习之使用 DockerFile 构建镜像并搭建 swarm+compose 集群
题目要求 (1)将springboot应用程序打成jar包:Hot.jar (2)利用dockerfile将Hot.jar构建成镜像 (3)构建 Swarm 集群 (4)在 Swarm 集群中使用 c ...
- docker把web jar包制作成镜像
1.新建一个spring boot项目 并使用maven打成jar包,放到linux(centos7)环境上. 运行 java -jar hello.jar 后结果如下(这里项目对外提供的端口是90 ...
- [置顶]
Docker学习总结(1)——Docker实战之入门以及Dockerfile(一)
一.Docker是什么? 首先Docker是软件工业上的集装箱技术 回顾,在没有集装箱出现以前,传统运输行业中,会存在这些问题: 在运输过程中,货物损坏 装卸.运输货物,效率低下 运输手续繁多及运输环 ...
- Docker学习重点(7)~DockerFile
一.DockerFile DockerFile是用来构建docker镜像的文件,可以理解为命令参数脚本! 1.构建步骤: 编写一个dockerfile文件 docker build 构建成为一个镜像 ...
随机推荐
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之替换logo-13
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之替换logo-13 欢迎加QQ群:1026880196 进行交流学习 替换 openstack das ...
- Day14_79_IO+Properties联合应用
IO+Properties联合应用 - dbinfo文件中可以存放<key=value> - 像dbinfo这样的文件我们叫做配置文件,配置文件的作用是使程序更加灵活 - 一般在程序中可变 ...
- 超详细网站博客域名和二级域名、子域名升级HTTPS免费申请SSL证书配置nginx指南
随着互联网的飞速发展,我们的工作生活已经离不开互联网,HTTP虽然使用极为广泛, 但是存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付,网络交易等网站应用中 ...
- k8s 证书更新操作
kubernetes证书更新 版本:1.14.2,以下操作在3台master节点上操作 1.各个证书过期时间 /etc/kubernetes/pki/apiserver.crt #1年有效期 /etc ...
- java面试一日一题:mysql中的自增主键
问题:请讲下mysql中的自增主键 分析:该问题主要考察对mysql中自增主键的掌握,使用场景及如何设置 回答要点: 主要从以下几点去考虑 1.什么自增主键 2.使用场景是什么: 3.innodb_a ...
- 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)
目录 一.简介 1.1.使用场景 1.2.限制条件 二.完全可传输操作步骤 三.案例演示 3.1.环境 3.2.源库操作 3.2.1.将需要传输的用户表空间设置为RO状态 3.2.2.使用Data P ...
- 【VsCode】常用的快捷键
查找和替换: 查找:Ctrl +F 查找和替换:Ctrl +H编辑器和窗口管理相关快捷键: 文件之间切换:Ctrl+Tab 关闭当前窗口:Ctrl+W /Ctrl +F4 切出一个新的编辑器窗口(最多 ...
- 手动脱ORiEN壳实战
作者:Fly2015 ORiEN这种壳之前没有接触,到底是压缩壳还是加密壳也不知道,只能试一试喽.需要脱壳的程序是吾爱破解脱壳练习第7期的题目. 首先对加壳程序进行查壳,这一步也是程序脱壳的必要的一步 ...
- hdu1247 字典树或者hash
题意: 给你一些串,问你哪些串是由其他两个串连接成的. 思路: 我用了两种方法,一个是hash,hash的时候用map实现的,第二种方法是字典树,字典树我们枚举每个一字符串,查 ...
- Python第四章-字典
第四章 字典-当索引不好用时 4.0 字典可以理解成是C++里的map,可以映射任何类型.字典这种结构类型称为映射(mapping). 字典是Python中唯一内建的映射类型,字典中的值并 ...