zoukankan      html  css  js  c++  java
  • win10 docker安装使用和mobaxterm登录ssh

    win10下的docker安装使用和shell登录

    背景

    工作需要用到docker,平时编码都在win10下搞,后来发现现在的win10下一样也可以安装docker,那么何不在win10下搞docker后其他适配编译啥的都放docker里搞了得了,毕竟虚拟机真是有点重。废话不多数,如下是我win上
    安装docker的环境。

    1. Docker Desktop v19.03.13
    2. 启用了WSL2,启用了docker可以直接在WSL2中直接使用,这样就和在linux下操作docker一毛一样了

    目标

    安装一个ubuntu docker 可以在mobaxterm的终端进行登录即可。

    安装镜像

    随便找了一个docker镜像,直接在powershell中 docker pull osgeo/gdal:ubuntu-full-lastest

    创建容器(在WSL中)

    使用
    docker run --name="test-docker" -dit -v /mnt/e:/home/test -p 9022:22 [docker镜像id]

    创建镜像,run的详细命令参数的意思,可网上搜一下,这里简要说明一下:

    • --name="test-docker" 制定创建容器的名字
    • -dit 制定创建容器 分离的方式创建容器机run后不在控制台交互(-d), STDIN打开即可以和控制台交互(i),t 分配一下伪控制台(源命令解释 Allocate a pseudo-TTY)
    • -v /mnt/e:/home/test 将宿主机 /mnt/e(即E盘) 映射到容器的 /home/test 目录
    • -p 9022:22 将宿主机的 9022 端口映射到容器的22端口,后边用来远程登录容器

    启动容器后使用 Mobaxterm 登录:

    发现不能登录,找到原因是 ubuntu 默认是不开启ssh服务的。
    进入容器中安装ssh服务,参考
    http://blog.chinaunix.net/uid-69944074-id-5831708.html

    发现,ubuntu 默认不允许使用root登录, 我按上文修改了容器中的:
    sudo vi /etc/ssh/sshd_config 找到PermitRootLogin without-password 修改为PermitRootLogin yes (本人遇到过)
    然后重启ssh服务在 Mobaxterm 登录就OK了

    注意:一般容器中的软件镜像源都不是最新的,而且直接apt install 会提示有问题,那么就需要执行如下命令:

    apt update 
    apt upgrade
    

    如上边命令很慢,那么就更新ubuntu的镜像源,参考 https://github.com/0fengzi0/Blog/issues/15
    比较恶心的是容器中一般没有编辑器 那么直接用cp 命令 和echo 命令修改 /etc/apt/sources.list文件

    #备份原始仓库信息
    cp /etc/apt/sources.list /etc/apt/sources.list
    #替换仓库信息 (ubuntu20)其他版本有变动
    echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list
    echo "deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list
    echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
    

    到这里基本就折腾完了。

    后记

    多说一句,原本我是想直接对外部保留 docker 本身的IP地址的,但是折腾很久也没折腾出来
    参考文章1 参考文章2 [参考文章3](https://xiabee.cn/coding/wsl2) [参考文章4] https://blog.51cto.com/zhongliang/2454181)。后来还是老老实实的做端口映射吧。当然现在直接用root登录docker也有点丑陋
    但是自己开发和测试时够了的,毕竟不是搞运维,安全的运维的工作就交给更专业的人来搞吧。

  • 相关阅读:
    党史回顾+十九大习思想+中国历史事件+地理+航天史及古代天文历法
    国际组织
    生活-常识-物理
    生物
    数量题目总结-利润排列组合
    数量题目总结-工程最值集合
    考公错题记录表
    个人向简历介绍
    数据库操作大全
    团队博客作业-技术规格说明书
  • 原文地址:https://www.cnblogs.com/xueye9/p/14057262.html
Copyright © 2011-2022 走看看