zoukankan      html  css  js  c++  java
  • Docker实战(七)之为镜像添加SSH服务

    1.基于commit命令创建

    Docker提供了docker commit命令,支持用户提交自己对制定容器的修改,并生成新的镜像。命令格式为docker commit CONTAINER [REPOSITORY[:TAG]]。

    (1)创建一个镜像

    docker run -it ubuntu:14.04 /bin/bash

    更新apt缓存,并安装openssh-server

    apt-get update

    apt-get install openssh-server -y

    (2)安装配置SSH服务

    apt-get install openssh-server -y

    如果需要正常启动SSH服务,则目录/var/run/sshd必须存在。手动创建它,并启动SSH服务:

    mkdir -p /var/run/sshd

    /usr/bin/sshd -D &

    netstat -tunlp

    (3)保存镜像

    docker commit 1b902596b8b9 sshd:ubuntu

    (4)使用镜像

    启动容器,并添加端口映射10022-->22。其中10022是宿主主机的端口,22是容器的SSH服务监听的端口:

    docker run -p 10022:22 -d sshd:ubuntu /run.sh

    启动成功后,可以在宿主主机上看到容器运行的详细信息

    在宿主主机或其他主机上,可以通过SSH访问10022端口来登录容器

    ssh IP -p 10022

    2.使用Dockerfile创建

    (1)创建工作目录

    mkdir sshd_ubuntu

    cd ssh_ubuntu

    在该目录中创建Dockerfile和run.sh文件

    (2)编写run.sh脚本和authorized_keys文件

    run.sh脚本内容如下:

    #!/bin/bash
    /usr/sbin/sshd -D

    在宿主主机上生成SSH密钥,并创建authorized_keys文件:

    ssh-keygen -t rsa

    cat authorized_keys.pub > authorized_keys

    (3)编写Dockerfile文件

    #设置继承镜像
    FROM ubuntu:14.04
    
    #提供一些作者信息
    MAINTAINER docker_user(user@docer.com)
    
    #下面开始运行更新命令
    RUN apt-get update
    
    #安装ssh服务
    RUN apt-get install -y openssh-server
    RUN mkdir -p /var/run/sshd
    RUN mkdir -p /root/.ssh
    
    #取消pam限制
    RUN sed -ri 's/session required pam_loginuid.sh/#session required pam_loginuid.so/g' /etc/pam.d/sshd
    
    #复制配置文件到相应位置,并赋予脚本可执行权限
    ADD authorized_keys /root/.ssh/authorized_keys
    ADD run.sh /run.sh
    RUN chmod 755 /run.sh
    
    #开放端口
    EXPOSE 22
    
    #设置自启动命令
    CMD ["/run.sh"]

    (4)创建镜像

    执行该命令即可创建镜像

    docker build -t sshd:dockerfile .

    记得必须要在Dockerfile文件存在的目录执行该命令否则会报找不到目录异常

    docker images

    (5)测试镜像,运行容器

    docker run -d -p 10122:22 sshd:dockerfile

    在宿主主机新打开一个终端,连接到新建容器:

    ssh 192.168.126.130 -p 10122

  • 相关阅读:
    计算一路话音消耗的带宽
    谋哥:我跟CEO们都说了啥
    wchar与char字符转换的探究
    pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下
    围住浮动元素的三种方法
    Chromium浏览器组件设计意图
    tonymillion/Reachability的使用
    赵雅智_名片夹(3)_下拉刷新载入很多其它
    动态创建菜单和动态关联菜单项事件
    delphi创建动态菜单
  • 原文地址:https://www.cnblogs.com/youcong/p/9193739.html
Copyright © 2011-2022 走看看