云与虚拟化——实验4 构建镜像

实验4-1 利用Docker commit构建带sshd服务自定义镜像

1.1 拉取镜像,并安装ssh,生成秘钥生成镜像

# 拉取镜像
docker pull centos:7
# 启动一个容器
docker run -itd --name centos_sshd centos:7 bash
# 在容器里启动bash,并且显示出来
docker exec -it centos_sshd bash

image-20231019142535047

进入容器:

#切换镜像源到cernet
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.cernet.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo
#安装sshd,以下在容器里进行
yum -y install openssh-server net-tools
mkdir -pv /var/run/sshd
#启动脚本
echo "/usr/sbin/sshd -D" > /auto_sshd.sh
#查看文件
cat /auto_sshd.sh
#给执行权限
chmod +x /auto_sshd.sh
#修改密码:
echo "root:123456" | chpasswd
#生成秘钥:一路回车哦
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

image-20231019142808785

image-20231019142844134

再生成俩秘钥

ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
#退出容器
exit

image-20231019143109874

构建镜像:

docker commit centos_sshd centos7_sshd:1.0
   当前的containerd  目标镜像:TAG信息
docker images

image-20231019143810378

1.2测试容器是否可用

docker run -itd --name centos_7.0-1 centos7_sshd:1.0
docker ps

成功

image-20231019143858385

测试SSH是否可用

#               containerID  执行的软体
docker exec -it c43a bash
# 查看IP
ifconfig
# CTRL + P +Q 挂起退出或者直接ctrl+X

#上面两行也可以直接执行:
docker exec -it centos_7.0-1 ifconfig

#启动SSH服务
docker exec -itd centos_7.0-1 八省/auto_sshd.sh

image-20231019144028627

image-20231019150408738

1.3连接SSH

#这里填你的IP
ssh root@172.17.0.6
#密码:123456

image-20231019144712817

image-20231019150738368

1.4查看镜像/Container信息

docker inspect centos7_sshd:1.0

image-20231019145506707

2 帮助

# 删除全部容器
docker rm -f $(docker ps -aq)
#         force  -a全部 -q只显示id

# SSH无法连接删除这个文件:
rm -rf ./.ssh/known_hosts

实验4-2 利用Dockerfile构建带sshd服务的自定义镜像

3.1Dockerfile 构建centos7_sshd:1.0

新建个目录:

mkdir -pv /opt/centos_sshd
cd /opt/centos_sshd
vi Dockerfile

把这个文件塞进去

# 使用CERNET镜像源的CentOS 7作为基础镜像
FROM centos:7
MAINTAINER dayi 
# 切换镜像源到CERNET
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \
        -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.cernet.edu.cn/centos|g' \
        -i.bak \
        /etc/yum.repos.d/CentOS-*.repo
# 安装必要的软件包
RUN yum -y install openssh-server net-tools && \
    mkdir -pv /var/run/sshd && \
    echo "/usr/sbin/sshd -D && nohup" > /auto_sshd.sh && \
    chmod +x /auto_sshd.sh && \
    echo "root:123456" | chpasswd && \
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
# 暴露SSH端口
EXPOSE 22
# 启动SSH服务
CMD ["bash","/auto_sshd.sh"]

image-20231019151206964

3.2构建镜像

构建!

cd /opt/centos_sshd
#构建
docker build -t centos7_sshd:2.0 .
#查看镜像
docker images

image-20231019151719703

3.3 启动

docker run -itd --name centos7_ssh_2 centos7_sshd:2.0
docker exec -it centos7_ssh_2 ifconfig

image-20231019153533889

连接试试:

ssh root@172.17.0.2
123456

image-20231019153635632

3.4 启动失败

# 删除全部容器
docker rm -f $(docker ps -aq)
#         force  -a全部 -q只显示id

# SSH无法连接删除这个文件:
rm -rf ./.ssh/known_hosts
最后修改:2023 年 11 月 23 日
如果觉得我的文章对你有用,请随意赞赏