Docker基础学习(9)-使用Dockerfile构建容器

使用Dockerfile构建容器

一、 问答题
1、 在Dockerfile中,COPY和ADD有什么区别

ADD支持URL,带解压的功能

2、 在Dockerfile中,RUN、CMD和ENTRYPOINT有什么区别

RUN构建镜像时执行的命令会,创建新的镜像层
CMD在容器启动时的默认值,只能有一个。可以被docker run后的指定参数替换
ENTRYPOINT是默认入口命令,肯定会被指定,不会被docker run后的指定参数覆盖(但也可以使用–entrypoint指定)。CMD或docker run后的参数可以作为ENTRYPOINT后面命令的参数。

3、 使用FROM可以选择一个父镜像,那么没有父镜像怎么办?

本地镜像不存在时,将从Register中下载并保存到本地

二、 实验题
使用Dockerfile构建具有SSH服务器的容器

实验:按照下面的实验流程,编写一个生成SSH服务的Dockerfile

创建centos7容器,并安装ssh服务
[root@docker1 ~]# docker run -it --name c7ssh -h c7ssh centos:7 /bin/bash
[root@c7ssh /]# yum install openssh openssh-server passwd vim -y
配置服务相关信息
vim /etc/ssh/sshd_config
#IgnoreRhosts yes -------> IgnoreRhosts yes
#UseDNS yes -----------> UseDNS no
GSSAPIAuthentication yes -----------> GSSAPIAuthentication no
生成ssh主机密码
[root@c7ssh ~]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ‘’
[root@c7ssh ~]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N ‘’
[root@c7ssh ~]# passwd
Changing password for user root.
构建镜像
[root@docker1 ~]# docker commit -m ‘centos-ssh’ b6c879e845c2 192.168.192.129:5000/centos-ssh sha256:316f764a7a95a43b44f47bea3ea51aed24b79db76e8d1c0c0404ccb0285d20e6 查看镜像 [root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.192.129:5000/centos-ssh latest 316f764a7a95 4 seconds ago 325MB
创建ssh容器
[root@docker1 ~]# docker run -d --name ssh-test -h server1 -p 22222:22 192.168.192.129:5000/centos-ssh /usr/sbin/sshd -D 0c92adfafa6e89743fe87920eaef4243caee422f6532dba45ed951f36135cdaa
查看并验证
[root@docker1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0c92adfafa6e 192.168.192.129:5000/centos-ssh “/usr/sbin/sshd -D” 5 seconds ago Up 5 seconds 0.0.0.0:22222->22/tcp ssh-test 733310a6d14a registry:2.7 “/entrypoint.sh /etc…” 2 weeks ago Up 2 hours 0.0.0.0:5000->5000/tcp registry
[root@docker1 ~]# netstat -tlnup | grep :22222
tcp6 0 0 :::22222 ::😗 LISTEN 2551/docker-proxy
[root@docker1 ~]# ssh root@127.0.0.1 -p 22222
The authenticity of host ‘[127.0.0.1]:22222 ([127.0.0.1]:22222)’ can’t be established. RSA key fingerprint is SHA256:Q/dbRKle4jSuJ76vMxXNoqeehf/xmRzybBJcyfUBqxA. RSA key fingerprint is MD5:60:66:47:bc:d4:d4:8c:81:ef:11:d6:42:5d:cf:47:4e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘[127.0.0.1]:22222’ (RSA) to the list of known hosts. root@127.0.0.1’s password:

Dockerfile:

FROM centos:7
MAINTAINER kdl<3049941765@qq.com>
RUN yum install openssh openssh-server passwd vim -y 
RUN sed -i -e 's/#IgnoreRhosts yes/IgnoreRhosts yes/g' -e 's/#UseDNS yes/UseDNS no/g' -e 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N '';ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N ''
RUN echo 123456 | passwd --stdin root
EXPOSE 22
ENTRYPOINT ["/usr/sbin/sshd","-D"]

使用Docker构建镜像

[root@docker1 test]# docker build -t centos:test . -q
[root@docker1 test]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
centos                        test                0910394a45df        13 seconds ago      325MB

启动一个容器,注意端口映射

[root@docker1 test]# docker run -d --name ssh-test -h server1 -p 22222:22 centos:test
3e39ad4a9ff2eaa41f453f0477db873123996e4878ccbd9774905f3a49317f50
[root@docker1 test]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
3e39ad4a9ff2        centos:test         "/usr/sbin/sshd -D"      20 seconds ago      Up 19 seconds       0.0.0.0:22222->22/tcp    ssh-test

ssh登陆到容器

[root@docker1 test]# ssh root@localhost -p 22222
Are you sure you want to continue connecting (yes/no)? yes     
Warning: Permanently added '[localhost]:22222' (RSA) to the list of known hosts.
root@localhost's password: 123456	(密码不显示)
[root@server1 ~]#		#ssh登陆到了容器中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值