镜像制作过程(ssh方式)

本文介绍了一种通过SSH方式在Docker容器内安装配置软件环境并最终打包为镜像的方法,涉及Ubuntu镜像下载、SSH服务配置、源码编译及运行脚本编写等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里制作的是wgs_demo镜像(公司内部),其他程序打包成镜像类似

通常使用的打包镜像的方法是采用DockerFile方式,这里采用ssh方式

1、首先下载Ubuntu(Debian系列)官方镜像(也可以是RedHat系列的)

命令 docker pull Ubuntu

docker run -tid --name ubuntu -p 23:22 ubuntu:将新建的docker命名为ubuntu并映射到23端口

netstat -apnl | grep 23 查看23端口是否开启

可以看到23端口是开着的。

docker exec -ti ubuntu /bin/bash 进入docker的Ubuntu (或者使用docker run -i -t ubuntu /bin/bash),然后通过passwd命令修改root的密码。

2、使用ssh登录docker容器

apt install -y vim 安装(更新)一下vim

如果出现上述情况,更新一下源 apt update

再执行 apt install - ­y vim

接着安装openssh-server:  apt install -y openssh-server

成功安装后,vim /etc/ssh/sshd_config,修改下面配置,使得可以直接使用root 登录,修改内容如下:

(1)添加PermitRootLogin yes

将上面的一句注释掉,加上PermitRootLogin yes这一句。

(2)添加UsePAM no

启动ssh服务,service ssh start

exit 退出docker,输入docker ps –a,查看docker的ID

重新打开一个终端,通过ssh root@10.18.101.92 -p 23 进入docker:

3、准备源码wgs_demo,并对需要的依赖库进行编译

(如果已经有编译过可以运行的库,可以忽略这步,建议重新编译,否则后面出错会有很多坑)

这里需要编译的库有bwa,samtools

附上 bwa源码地址:https://github.com/lh3/bwa

samtools源码地址:https://github.com/samtools/samtools

根据README.md步骤进行编译,编译后将bin目录下的bwa和samtools拷贝到wgs的bin目录下即可

4、将准备好运行的代码,编写好运行命令

这里是wgs_flow.sh,通过运行这个脚本来运行代码程序,测试程序是否能够正常运行

5、将编译好的运行环境打包成为一个容器,保存成为一个镜像文件

这里的docker id 通过 docker ps –a 查看自己的,这里的容器名我取为wgs_demo,版本号为v1

docker commit 76fcv98 wgs_demo:v1

docker save XXXX:XXXX > XXXX.img(将容器保存成为一个镜像文件)

后期需要使用该镜像时,只需要拷贝这个打包好的容器文件,加载即可

Docker load < XXXX.img

6、编写好docker run命令

这里通过挂载 容器中的地址到宿主机上的硬盘地址 来进行数据的读写操作,docker run 命令如下:

docker run -it -v /home/wzy/wgs_demo/output:/root/app/output -v /home/wzy/wgs_demo/data:/root/app/data wgs_demo:v1  /root/app/wgs_flow.sh

注意最后 执行命令不要写成如下(程序会运行异常):

docker run -it -v /home/wzy/wgs_demo/output:/root/app/output -v /home/wzy/wgs_demo/data:/root/app/data wgs_demo:v1   sh /root/app/wgs_flow.sh

 

 

如果没错的话,容器里的程序就会正常运行了!!!

通过SSH(Secure Shell)直接打包整个Linux系统的ISO镜像文件通常不太方便,因为SSH主要用于远程登录和命令行操作,而不是文件复制或系统备份。但你可以按照以下步骤在本地机器上完成这个过程: 1. **登录到Linux服务器**: 首先,你需要通过SSH连接到Linux服务器。打开终端并输入以下命令(假设用户名是`username`,IP地址是`server_ip`): ``` ssh username@server_ip ``` 2. **创建一个临时目录**: 到达服务器后,创建一个临时目录来存放将要打包的文件系统: ``` mkdir /tmp/local_disk_image ``` 3. **挂载远程硬盘** (如果允许并且必要): 如果服务器允许,并且有额外的磁盘空间,可以尝试挂载远程硬盘到这个临时目录: ```bash sudo mount -t filesystem <remote_device> /tmp/local_disk_image ``` 4. **复制文件系统**: 使用 `rsync` 或 `tar` 工具复制整个文件系统到临时目录: - 对于`rsync`: ``` rsync -avzAXHAX --delete / /tmp/local_disk_image/ ``` - 对于`tar`: ``` tar czf local_disk_image.tar.gz / ``` 5. **压缩并转换为ISO**: 将`.tar.gz`文件转换为ISO格式: ``` cd /tmp xorriso -as mkisofs -o local_disk_image.iso local_disk_image.tar.gz ``` 6. **下载或传输**: 现在你可以在服务器上下载或通过SCP、SFTP等方式将`local_disk_image.iso`文件传输到你的本地电脑。 7. **清理**: 移除临时目录和可能的挂载点,然后退出SSH会话: ``` rm -rf /tmp/local_disk_image* umount /tmp/local_disk_image exit ``` 8. **验证ISO**: 下载后的ISO文件在本地验证其完整性很重要,可以使用如 `md5sum` 或 `sha256sum` 进行校验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值