Docker 离线制作基于ubuntu的tftp
1、下载一个原始的模板压缩包
链接:https://download.openvz.org/template/precreated/
文件名:ubuntu-16.04-x86_64.tar.gz
2、导入模板压缩包为镜像
docker import -m 'test docker for http,dhcp' ubuntu-16.04-x86_64.tar.gz docker-ubuntu-dhcp-tftp:dhcp-tftp
备注:
①-m 备注
②docker-ubuntu-dhcp-tftp:dhcp-tftp 对应仓库:TAG
③ docker import -m 'test docker for http,dhcp'(说明信息) ubuntu-16.04-x86_64.tar.gz(模板压缩包) docker-ubuntu-dhcp-tftp:dhcp-tftp【镜像(仓库:TAG)】
3、使用镜像启动一个容器,安装tftp
(1)后台运行一个容器
docker run -itd --name tftp_dhcp_container docker-ubuntu-dhcp-tftp:dhcp-tftp /bin/bash
(2)进入docker容器创建一个文件夹用于存在安装包
docker attach tftp_dhcp_container
cd /home
mkdir tftp_package
(3)拷贝tftp安装包到容器
参考链接:https://www.cnblogs.com/rainbow-tan/p/14075115.html
docker cp xinetd_2.3.15.3-1_amd64.deb tftp_dhcp_container:/home/tftp_package/
docker cp tftpd-hpa_5.2+20150808-1ubuntu3_amd64.deb tftp_dhcp_container:/home/tftp_package/
docker cp tftp-hpa_5.2+20150808-1ubuntu3_amd64.deb tftp_dhcp_container:/home/tftp_package/
(4)安装tftp并配置
参考链接:https://www.cnblogs.com/rainbow-tan/p/14075115.html
sudo dpkg -i xinetd_2.3.15.3-1_amd64.deb sudo dpkg -i tftpd-hpa_5.2+20150808-1ubuntu3_amd64.deb sudo dpkg -i tftp-hpa_5.2+20150808-1ubuntu3_amd64.deb
3、导出新的镜像
docker commit -m 'tftp end' tftp_dhcp_container tftp_container
备注:
①-m 说明
②tftp_dhcp_container 是之前镜像的名字
③tftp_container 是保存的名字
4、保存镜像为文件,方便拷贝到另一台机器上使用
参考链接:https://www.cnblogs.com/lsgxeva/p/8746644.html
docker save -o tftp_image.tar tftp_container
保存后可看到tar文件
5、另一个机器测试导出的tar是否可行
(1)加载刚才导出的tar文件为镜像
docker load < tftp_image.tar
(2)启动镜像
①后台启动镜像,映射端口,挂载目录(-v 宿主机地址:容器地址),指定网络连接类型为host,这样宿主机才可以进行tftp的访问
备注:
必须指定网络类型为host,这样才可以进行在容器外的tftp的连接
挂载目录后,容器内的目录中原有的文件找不到了,完完全全是宿主机的目录
docker run -itd -p 69:69 -v /home/tftpboot:/var/lib/tftpboot --net="host" --name test_tftp3 tftp_container
②进入容器,启动tftp
docker exec -it test_tftp3 /bin/bash
通过蓝色框内容可看到已经进去了,因为路径变了。docker命令没了,这个exec和attach都可进入容器,关键在于退出时exit,前者不会关闭容器,后者会关闭容器。
/etc/init.d/tftpd-hpa start
netstat -a |grep tftp
③退出容器,在容器外进行tftp的测试(也可以开一个新的窗口,这样就有一个窗口是宿主机,有一个是容器,操作更方便)
exit
④同一局域网测试tftp