云与虚拟化——实验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
进入容器:
#切换镜像源到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
再生成俩秘钥
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
#退出容器
exit
构建镜像:
docker commit centos_sshd centos7_sshd:1.0
当前的containerd 目标镜像:TAG信息
docker images
1.2测试容器是否可用
docker run -itd --name centos_7.0-1 centos7_sshd:1.0
docker ps
成功
测试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
1.3连接SSH
#这里填你的IP
ssh root@172.17.0.6
#密码:123456
1.4查看镜像/Container信息
docker inspect centos7_sshd:1.0
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"]
3.2构建镜像
构建!
cd /opt/centos_sshd
#构建
docker build -t centos7_sshd:2.0 .
#查看镜像
docker images
3.3 启动
docker run -itd --name centos7_ssh_2 centos7_sshd:2.0
docker exec -it centos7_ssh_2 ifconfig
连接试试:
ssh root@172.17.0.2
123456
3.4 启动失败
# 删除全部容器
docker rm -f $(docker ps -aq)
# force -a全部 -q只显示id
# SSH无法连接删除这个文件:
rm -rf ./.ssh/known_hosts