docker 创建虚拟机并且远程链接 shell脚本

简介: 再执行完成脚本后,需要仅需虚拟机执行安装时间和ssh工具进行远程连接
#!/bin/bash
updatesj(){
# 更新时间
rpmntpdate=`rpm -qa | grep ntpdate | wc -l`
if [ $rpmntpdate -gt 0 ]
                                                                                        # 相等 -eq    不相等 -ne     大于  -gt     大等于  -ge     小于  -lt       小等于  -le
   then
       echo "已经安装时间更新 ntpdate"
    else
           yum install -y ntpdate                                               # 安装工具
           ntpdate -u cn.pool.ntp.org                                   # 同步时间
           timedatectl set-timezone Asia/Shanghai               # 设置区域
           systemctl start ntpd                                         # 启动时间
           systemctl enable ntpd                                                # 开机启动:自动同步
fi
}
updatesj
installDocker(){
# 安装 docker
docker --version
if [ $? -eq 0 ]                                                                        # $? 判断上一条命令是否执行成功, -eq 等于  0
  then
       echo "已经安装docker"
       docker pull centos:7                                                  # 拉取镜像centos7
       tagc=$(docker images | grep centos | awk -F" " '{print $3}') ; echo $tagc
       tagd="127.0.0.1:5000/rancher/centos:7"
       docker tag $tagc $tagd                                             # 打标签
       docker rmi $tagd                                                       # 删除标签
  else
       echo "正在安装docker 中。。。"
       wget eisc.cn/file/shell/dockerinstall.sh ; sh dockerinstall.sh
fi
}
installDocker
systemctl restart docker                                                 # 重启docker
xnjdemo(){
       useradd demo                                                      # 创建用户  demo
       echo "eisc.cn" | passwd --stdin demo                  # 为用户 demo 设置密码为: eisc.cn
       chmod u+w /etc/sudoers                                     # 用户写 权限 这个文件
       cp /etc/sudoers /etc/sudoers.back
       sed -i "/^#/d" /etc/sudoers                                  # 删除开头#号的行
       sed -i "/^$/d" /etc/sudoers                                   # 删除空行
       echo "domo    ALL=(ALL)       ALL" >> /etc/sudoers
                                                                                     # 添加用户权限 所有权限
        sudo docker pull centos:7                                    # 拉群centos7 镜像,因为使用的 demo 用户,修改系统需要加上 sudo
        sudo docker images                                             # 列出镜像列表
        sudo systemctl start firewalld                               # 启动防火墙; stop 关闭
        sudo firewall-cmd --permanent --zone=public --add-port=10022/tcp
        sudo firewall-cmd --permanent --zone=public --add-port=10080/tcp
        firewall-cmd --reload                                            # 开放端口,和重载防火墙配置
        firewall-cmd --list-all                                             # 列出防火墙所有规则
        # sudo docker run -d --name c7-d1 --privileged=true -p 10022:22 -p 10080:80 \
        # -h c7-docker-1 -v /home/fd/container/c7-d-1:/home/c7-d1-ys centos:7 /usr/sbin/init
        docker run --name eisc  --privileged=true -dit -p 10022:22 -p 10080:80 centos:7 /usr/sbin/init
                                                                                       # 符号  \ 将长命令换行编写;   运行centos7 版本  名字为eisc
                                                                                       # 注意:一个单词不能换行后还有空格存在,例如: date  变成:dat  e
                                                                                       # -d 后台运行方式
                                                                                       # name 创建的容器名,方便启动、关闭、重启、删除容器等操作
                                                                                       # privileged=true        加上之后容器内部权限更多,不会出现权限问题
                                                                                       # -p 10022:22 -p 10080:80       指定端口映射,可同时放通多个端口
                                                                                       # -h c7-docker-1 指定容器主机名
                                                                                       # -v /home/fd/container/c7-d-1:/home/c7-d1-ys                                                         宿主机目录映射到容器内部目录
                                                                                       # centos:7       本地centos镜像版本
                                                                                       # /usr/sbin/init 启动方式
       docker exec -it eisc /bin/bash
                                                                                        # 进入启动的容器 eisc
                                                                                        # -d    后台运行方式
                                                                                        # name  创建的容器名,方便启动、关闭、重启、删除容器等操作
                                                                                        # privileged=true       加上之后容器内部权限更多,不会出现权限问题
                                                                                        # -p 10022:22 -p 10080:80      指定端口映射,可同时放通多个端口
                                                                                        # -h c7-docker-1        指定容器主机名
                                                                                        # -v /home/fd/container/c7-d-1:/home/c7-d1-ys                                                        宿主机目录映射到容器内部目录
                                                                                        # centos:7      本地centos镜像版本

                                                                                       # /usr/sbin/init        启动方式
}
xnjdemo
centosxuniji(){
# 启动的虚拟机需要执行下面命令 否则无法通过端口映射远程连接docker虚拟机

      yum install -y ntpdate                                              # 安装工具
      ntpdate -u cn.pool.ntp.org                                       # 同步时间
      timedatectl set-timezone Asia/Shanghai                  # 设置区域
      systemctl start ntpd                                                  # 启动时间
      systemctl enable ntpd                                              # 开机启动:自动同步
      yum install -y wget


repo="centos-yum.sh"
if [ ! -e $repo ]; then                 # -e 判断文件存在;参考:Shell if 条件判断文件或目录
yum install -y wget
wget www.eisc.cn/file/shell/centos-yum.sh ; sh centos-yum.sh
else
echo "yum已经切换"
fi



yum -y install systemd && \
yum -y install firewalld && \
yum -y install openssh openssh-server openssh-clients && \
systemctl start sshd
# ssh-keygen -t rsa                                # 配置免密登陆密钥
echo "eisc.cn" | passwd --stdin root
}

# docker commit c5d63d185542 centos7-csh    # 保存 docker ps -a 运行中的镜像,名字为:centos7-csh
# wget eisc.cn/file/shell/docker-xnj.sh ; sh docker-xnj.sh

目录
相关文章
|
1月前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
127 12
|
6月前
|
Ubuntu Shell 网络安全
安装了ubuntu虚拟机后发现shell无法连接 ubuntu开启ssh连接
【8月更文挑战第23天】安装了ubuntu虚拟机后发现shell无法连接
492 6
|
3月前
|
JavaScript 数据库 Docker
一个有用的docker entrypoint脚本的范例
通过这个 Entrypoint 脚本,您可以确保在 Docker 容器启动时执行必要的初始化步骤,并且容器可以根据不同的运行时环境进行相应的配置和操作。这个范例展示了如何编写一个灵活且功能强大的 Entrypoint 脚本,使您的 Docker 容器更加可靠和易于管理。
67 3
|
4月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
129 2
|
4月前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
355 0
虚拟机centos7.9一键部署docker
|
4月前
|
小程序 Java Android开发
flutter:注意点&快速代码&链接虚拟机&改配置 (一)
这段内容主要介绍了Flutter开发中的一些注意事项和快速代码示例。首先,在构建Flutter小程序时,`setState`方法只能在`StatefulWidget`和`State`类中使用,且初始化数据应放在`initState`方法内。接着,通过一个简单的示例展示了如何构建一个包含`Scaffold`的基本Flutter应用,并指出了在`MaterialApp`中移除调试横幅的方法。此外,文档还提供了关于搭建Flutter开发环境、配置虚拟机、解决安装错误以及配置相关文件(如`build.gradle`)的指导信息。
|
6月前
|
测试技术 持续交付 云计算
Docker 相对于虚拟机的优势
【8月更文挑战第27天】
306 5
|
6月前
|
安全 持续交付 虚拟化
在Docker中,Docker和虚拟机有什么不同?
在Docker中,Docker和虚拟机有什么不同?
|
6月前
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
6月前
|
监控 Ubuntu Docker
如何在Docker容器启动时自动运行脚本
【8月更文挑战第13天】在Docker容器启动时自动运行脚本可通过以下方式实现:1) 使用`ENTRYPOINT`或`CMD`指令在Dockerfile中直接指定启动脚本,如`ENTRYPOINT ["/startup.sh"]`;2) 启动容器时通过`--entrypoint`参数指定脚本路径;3) 利用supervisor等进程管理工具自动启动与监控脚本,确保其稳定运行。确保脚本具有执行权限并正确设置依赖资源路径。
1789 1