DevOps
docker
docker
  • 基础知识
    • 概述
      • 核心概念
      • Docker 引擎
      • 基本架构
      • 联合文件系统
      • 网络虚拟化
    • 安装
      • 安装Docker Engine
      • 以非 root 用户使用 Docker
      • 配置 Docker 服务
    • 3. Docker镜像
      • 3.1 获取镜像(pull)
      • 3.2 查看镜像信息
        • images
        • tag
        • inspect
        • history
      • 3.3 搜寻镜像(search)
      • 3.4 删除镜像(rmi)
      • 3.5 清理镜像(prune)
      • 3.6 创建镜像
        • 基于已有容器创建
        • 基于本地模板导入
        • 基于Dockerfile创建
      • 3.7 导出镜像(save)
      • 3.8 导入镜像(load)
      • 3.9 上传镜像(push)
    • 4. Docker容器
      • 4.1 新建容器(create)
      • 4.2 启动容器(start)
      • 4.3 新建并启动容器(run)
      • 4.4 查看容器输出(logs)
      • 4.5 暂停容器(pause)
      • 4.6 恢复容器(unpause)
      • 4.7 停止止容器(stop)
      • 4.8 清除容器(prune)
      • 4.9 重启容器(restart)
      • 4.10 进入容器
      • 4.11 删除容器(rm)
      • 4.12 导出容器(export)
      • 4.13 导入容器(import)
      • 4.14 查看容器详情(inspect)
      • 4.15 查看容器内进程(top)
      • 4.16 查看统计信息(stats)
      • 4.17 复制文件(cp)
      • 4.18 查看变更(diff)
      • 4.19 更新配置(update)
    • 5. Docker仓库
      • 5.1 Docker Hub
      • 5.2 本地私有仓库
        • 使用HTTPS协议
        • 添加用户认证
        • 使用push时遇到的一些坑
    • 6. Docker数据管理
      • 6.1 数据卷
      • 6.2 数据卷容器
      • 6.3 利用数据卷容器来迁移数据
    • 7. 端口映射与容器互联
      • 7.1 端口映射
      • 7.2 容器互联
    • 8. Dockerfile
      • 8.1 基本结构
      • 8.2 指令说明
        • ARG
        • FROM
        • LABEL
        • EXPOSE
        • ENV
        • ENTRYPOINT
        • VOLUME
        • USER
        • WORKDIR
        • ONBUILD
        • STOPSIGNAL
        • HEALTHCHECK
        • SHELL
        • RUN
        • CMD
        • ADD
        • COPY
      • 8.3 创建镜像
      • 8.4 最佳实践
    • 9. Compose
      • 9.1 安装
      • 9.2 Compose文件
        • 9.2.1 services
        • 9.2.2 networks
        • 9.2.3 多文件Compose
          • Extend
          • Merge
          • Include
        • 9.2.4 锚点和别名
      • 9.3 Compose命令
      • 9.4 实例
  • 中间件安装
    • 安装tomcat
    • 安装redis
      • 单机
      • Cluster集群
    • 安装mysql
    • 安装ssh服务
      • 基于commit命令创建
      • 使用Dockerfile创建
    • 安装Apache
    • 安装ngnix
  • 操作系统镜像
    • BusyBox
    • ☑️Alpine
    • Debian/Ubuntu
    • CentOS/Fedora
  • Tips
    • docker 引擎开启远程访问
    • dockerfile-maven-plugin
    • IDEA 连接远程 docker
Powered by GitBook
On this page
  • 1. 生成密钥对
  • 2.启动docker容器
  • 3.安装ssh服务
  • 4. 启动ssh服务
  • 5. 免密登录
  • 6. 登录测试
  • 7. 提交镜像并试用

Was this helpful?

Edit on GitHub
  1. 中间件安装
  2. 安装ssh服务

基于commit命令创建

1. 生成密钥对

在需要利用ssh命令远程访问docker容器的机器上,利用ssh-keygen命令生成密钥对:

$ ssh-keygen -t rsa

2.启动docker容器

下载并启动一个用于提供ssh服务的docker容器:

$ docker run -itd --name sshd -p 10220:22 ubuntu:18.04

3.安装ssh服务

在容器中安装openssh-server:

$ docker exec sshd apt-get update
$ docker exec sshd apt-get install -y openssh-server

4. 启动ssh服务

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

$ docker exec sshd mkdir -p /var/run/sshd
$ docker exec -d sshd /usr/sbin/sshd -D

5. 免密登录

将宿主机的公钥复制到容器的authorized_keys中:

$ docker exec sshd \
    sh -c "mkdir -p ~/.ssh"
$ docker exec sshd \
    sh -c "echo $(cat ~/.ssh/id_rsa.pub) >> ~/.ssh/authorized_keys"

6. 登录测试

使用ssh命令访问容器,注意:只有配置了免密登录的用户才能够访问,其他未配置免密的用户会报Permission Denied错误!

$ ssh root@localhost -p 10220
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 3.10.0-1160.el7.x86_64 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
Last login: Thu Oct 19 13:08:02 2023 from 172.17.0.1
root@6a02d44fc0cf:~# 

7. 提交镜像并试用

  1. 使用docker commit命令提交镜像:

    $ docker commit -a zhang -m "add sshd service" sshd sshd:1.0
    sha256:1583d2c535cbdd412f11e4320f75f801646f668a83c2bea47c42b067f9e5b7c1
    
    $ docker images
    REPOSITORY       TAG       IMAGE ID       CREATED         SIZE
    sshd             1.0       1583d2c535cb   4 seconds ago   224MB
  2. 使用镜像:

    $ docker run -d --name sshd2 -p 10221:22 sshd:1.0 /usr/sbin/sshd -D
    01dde85847fecb73ea1a27a98e54b63ab0ef720962b34941da019368f3cc4155
    
    $ ssh root@localhost -p 10221
    The authenticity of host '[localhost]:10221 ([::1]:10221)' can't be established.
    ECDSA key fingerprint is SHA256:MA3b1evMkCpTsuv6AGpy3DUsuFSxlqmwtMNtg837G/M.
    ECDSA key fingerprint is MD5:84:69:9d:12:6b:15:4d:c6:0a:66:53:91:78:4d:61:68.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '[localhost]:10221' (ECDSA) to the list of known hosts.
    Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 3.10.0-1160.el7.x86_64 x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    This system has been minimized by removing packages and content that are
    not required on a system that users do not log into.
    
    To restore this content, you can run the 'unminimize' command.
    Last login: Thu Oct 19 13:12:07 2023 from 172.17.0.1
    root@01dde85847fe:~#
Previous安装ssh服务Next使用Dockerfile创建

Last updated 1 year ago

Was this helpful?