apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境

46c9583b54abf41007e1aab0539ff771.png

学习网络开发过程中不想“污染”macOS,考虑到之后部署网络应用主要是与linux打交道,所以安装了 ubuntu 虚拟机以满足短期的知识学习需求。十里安装了 ubuntu 虚拟机,一般就是在 mac 中 ssh 连接 ubuntu 虚拟机在终端下进行操作学习,可见安装一个包含完整GUI的 ubuntu 有点多余,还占用很多资源!所以想到了使用 docker 来创建 ubuntu 容器用来开发学习,本文就分享一下这个过程!

本文就不介绍 Docker 是什么了,主要描述搭建符合自己需求的 ubuntu 容器的过程。

1. 容器需求

  • 可以 ssh 连接
  • 包含 vim、git等基本工具

2. 安装和配置 Docker

2.1 下载并安装 Docker

  1. 访问 Docker 官网 了解和下载 Docker,这里也可以点我下载最新稳定版的 Docker for mac
  2. 打开下载的 dmg 文件,将 Docker 拖放到 Application 文件夹中即可完成安装
  3. 首次运行会有提示输入密码,用来获取完整的操作权限
  4. Docker 运行起来会在顶栏出现一个小鲸鱼的logo
  5. 安装成功后,在终端中查看 Docker 版本会得到下面类似信息:
➜  docker --version
Docker version 18.09.0, build 4d60db4
➜  docker-compose --version
docker-compose version 1.23.2, build 1110ad01
➜  docker-machine --version
docker-machine version 0.16.0, build 702c267f

2.2 配置 Docker

由于国内访问 Docker 官方默认的镜像源很慢,所以需要更换国内的镜像源进行加速,这里使用官方提供的一个镜像仓库地址:https://registry.docker-cn.com。

  1. 点击顶栏小鲸鱼的 logo,找到 Preferences点击调出 Doker 配置窗口;
  2. 点击 Daemon 按钮,就可以看到 Registry Mirrors 的配置页;
  3. 点击 + 号,添加上面提供的地址即可,添加完成后,点击 Apply & Restart ,等待一会儿 Docker 重启之后,配置即可生效,最终如下:

09f6b5af900ea814305f3e80c810c229.png

3. 定制 ubuntu 镜像

3.1 获取 ubuntu 镜像

运行命令

docker pull ubuntu

就会拉取官网上的最新 ubuntu 镜像,这是一个极其精简的镜像,作为我们定制 ubuntu 镜像的基础。

使用命令 docker image ls 可以查看当前安装的 Docker 镜像。

3.2 ubuntu 容器

3.2.1 创建 ubuntu 容器

使用命令 docker run -i -t --name mineos ubuntu bash 可以创建并运行一个可以使用终端交互的 ubuntu 容器,命令参数解释:

4071caf895e6ff4d6a610026073b74f4.png

上面的命令执行后,就会登陆 ubuntu 容器的 bash 中,执行命令cat /etc/issue 可以查看系统版本,十里的ubuntu版本是 18.04。此时按快捷键组合 ctrl + d 就会退出 ubuntu 容器,此时就会停止容器运行。

3.2.2 查看已有容器

使用命令 docker ps 可以查看当前运行的容器,如果此时执行,会发现没有容器信息,因为我们已经停止了刚才创建的容器。怎么查看已经关闭的容器信息呢?使用命令 docker ps -a,会列出所有容器信息,包括已经关闭的。此时执行,就会看到已经关闭的 mineos 容器。

3.2.3 以交互的形式启动容器

执行命令 docker start mineos 就会启动容器,但是你会发现无法像刚创建时登陆容器的 bash,先使用命令 docker stop mineos,此时加入 -i 参数启动就可以了 docker start -i mineos

3.3 ubuntu 容器的基本配置

登陆进 ubuntu 的 bash 以后就可以当正常的 ubuntu 进行使用了。

  • 更新软件源信息:apt-get update
  • 因为这个 ubuntu 的依赖镜像太精简了,所以好多工具没有安装,先安装一下 vim: apt-get install vim
  • 可以看到安装挺慢的,之所以先安装 vim 是为了可以编辑 /etc/apt/source.list 更换为国内访问更快的软件源,比如将文件中的内容替换为如下阿里云的:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse 
  • 重新更新软件源信息:apt-get update,会发现快很多
  • 飞一般的安装 git 和 python3:apt-get install git python3

3.4 配置 SSH

这一步主要是为了mac 可以 ssh 连接 ubuntu 容器。

3.4.1 安装 openssh-server

apt-get install openssh-server

用于开启 ssh 服务供外部连接。

3.4.2 配置 sshd

需要更改一下 sshd 的默认配置,编辑文件 /etc/ssh/sshd_config ,大概从 29 行开始主要更改三处,更改后内容如下:

PermitRootLogin yes # 可以登录 root 用户
PubkeyAuthentication yes # 可以使用 ssh 公钥许可
AuthorizedKeysFile  .ssh/authorized_keys # 公钥信息保存到文件 .ssh/authorized_keys 中

3.4.3 重启 sshd

因为 ubuntu 过于精简,不能使用 service 命令方便的重启 sshd,这里使用命令 /etc/init.d/ssh restart 进行重启,重启是为了让上面的配置生效。

3.4.4 添加主机的 ssh 公钥

这里的主机指的就是 macOS,保证此时还是在 ubuntu 容器中。

  • 在 HOME 目录下创建 .ssh 目录:mkdir ~/.ssh
  • 新建文件 ~/.ssh/authorized_keystouch ~/.ssh/authorized_keys
  • 新开一个 macOS 下的终端窗口,执行命令 cat ~/.ssh/id_rsa.pub,复制打印的一行公钥信息
  • 回到 ubuntu 容器中,将第 3 步复制的公钥粘贴到 ~/.ssh/authorized_keys 中保存。
如果使用过ssh免密码的登陆操作的话,相信您知道ssh的密钥生成方法,如果没了解过,可以参考:ssh-keys
  • 此时完成了 SSH 访问支持的添加,ctrl + d 退出容器。

3.5 提交修改到镜像

现在已经推出到正常的 mac 终端窗口中了,容器的修改不会影响到源镜像,上面的操作我们已经完成了 Ubuntu 的基本配置,并且添加了 SSH 支持,这一步是产生新的镜像版本。

  • 查看刚刚操作的容器信息,执行命令 docker ps -a ,可以看到 mineos 的状态已经是退出了,主要关注 mineos 的 CONTAINER ID ,复制这个 ID 号,比如为 e5d8c1030724
  • 执行下面的命令提交产生 ubuntu 新版本的镜像:Bash docker commit -m 'add ssh' -a '5km' e5d8c1030724 ubuntu-ssh
    • -m,指定提交信息
    • -a,指定提交者
    • 你需要把 e5d8c1030724 替换为您的容器的 CONTAINER ID
    • ubuntu-ssh 是新镜像的名称,可以随意指定
  • 使用命令 docker image ls 可以查看当前安装的镜像,上述操作正常的话就会看到 ubuntu-ssh 的镜像信息
  • 此时之前创建的容器就没用了,可以通过命令 docker rm mineos 进行删除

4. 最终的 ubuntu 容器

有了具有 SSH 支持的 ubuntu 镜像,我们就可以创建新的 ubuntu 容器,通过以下命令进行创建:

docker run -d -p 26122:22 --name learn ubuntu-ssh /usr/sbin/sshd -D

87e5271836dffcdb6384f32cbf7a5c31.png

在 macOS 的终端中执行命令 ssh -p 26122 root@localhost 即可连接已经启动的 ubuntu 容器 learn

为了更方便的连接,可以为容器创建 ssh 连接的主机短名,往 macOS 的 ~/.ssh/config 中添加以下内容:

Host learnHostName localhostUser     rootPort     26122

此时就可以通过命令 ssh learn 连接 ubuntu 容器 learn 了。

参考:

Docker-SSH连接docker容器​www.jianshu.com
b4bd927611728045030d9542e86234a9.png
Ubuntu下"sshd:unrecognized service"​blog.csdn.net

博客原文:

mac 下使用 Docker 搭建 ubuntu 环境​www.smslit.top
6ade254b0fe0fa09d9ed73c50b4c8ed5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

float去掉小数点之后_float类型的存储方式

在c语言中float函数是单精度的。它在内存中以二进制的形式存储。分为符号位,阶码与尾数三部分。 符号位最为简单,如果你存储的是正数那么符号数就是0。如果是负数,则为1。下面,我以13.625为例说明阶码与尾数的表示方法。首先&…

idea 2020.2 如何设置classpath_开发属于自己的第一款IDEA插件!

作者:木杉 http://imushan.com/写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件。要…

按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...

前言文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者: Yura不说数据说 ,PYuraLPS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://note.youdao.c…

c++获取当前时间戳_python开发:python时间模块的使用

前言:今天元宵节,祝福大家元宵节快乐。今天在元宵节给各位朋友分享一下python时间模块。我们在开发中经常会与时间打交道,如:获取事件戳,时间戳的格式化等,这里简要记录一下python操作时间的方法。ython中常…

python 获取向上两级路径_Python学习第171课--相对路径和绝对路径

【每天几分钟,从零入门python编程的世界!】这节我们补充2个概念:相对路径和绝对路径。●绝对路径就像一棵大树一样,从它的根开始,往上会有大的枝干,在大的枝干上面又会有小一点的树枝,小树枝上面…

百度热力图颜色说明_大数据下的龙港、鳌江人口热力图

大数据下的龙港、鳌江人口热力图--趋势显示,人口逐步集中于区域中心地区与城市 2020-08-25 大数据(big data),是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。大数据有五大特点,即大量(Volume)、高速(Velocity)…

python语言的单行注释以井号开头_【学习】Python语言入门

Python是一门具有强类型(即变量类型是强制要求的)、动态性、隐式类型(不需要做变量声明)、大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言。 语法 Python中没有强制的语句终止字符,且代码块是通过缩进来指示的。缩进表示一个代码…

python 参数个数 同名函数_Python——函数的参数

函数的参数定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,…

webview的

问题描述我给WEBVIEW加了等待的圆圈,怎么不起作用?布局文件:<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:lay…

java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)

final关键字&#xff1a; final表示最终的不可变的&#xff0c;在java中可以用来修饰类或方法、局部变量、成员变量。 // 1.final关键字修饰类需要放在class关键字前面&#xff0c;表示不可变的类&#xff0c;需要注意&#xff0c;这里表示当前类不能有子类&#xff0c;但是有…

python安装后无法使用_Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)...

在终端通过pip装好包以后&#xff0c;在pycharm中导入包时&#xff0c;依然会报错。新手不知道具体原因是什么&#xff0c;我把我的解决过程发出来&#xff0c;主要原因就是pip把包安装到了“解释器1”&#xff0c;但我们项目使用的是“解释器2”。我们新手怕字多&#xff0c;所…

03-sizeof的用法

1、作用 sizeof运算符是C语言特有的运算符。 用来计算一个变量或者一个常量、一种数据类型在内存中所占的字节数。 2、基本形式 (1) sizeof (变量或常量) (2) sizeof 变量或常量 (3) sizeof(数据类型) (4) 不能是sizeof 数据类型, 即计算数据类型的字节数必须用小括号括起来 实…

【Python3】POP3协议收邮件

初学Python3&#xff0c;做一个email的例子&#xff0c;虽然知道做的很渣渣&#xff0c;还是分享一下吧POP3协议POP3全称Post Official Protocol3&#xff0c;即邮局协议的第三个版本&#xff0c;它规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议&…

发红包案例(RedPacketFrame简介)

发红包案例&#xff1a; 案例目录结构如下&#xff08;red包为第三方包&#xff0c;需要的话可以到网上自行下载或私信我邮箱即可&#xff09;&#xff1a; // 1.这里将借用发红包的框架&#xff1a;RedPacketFrame&#xff08;图形界面化&#xff09;&#xff0c;OpenMode处…

easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?

最近在看《高性能的 Mysql》一书&#xff0c;下面是关于如何学习统计 Mysql 服务器状态的学习总结&#xff0c;主要是学习使用 SHOW STATUS&#xff0c;SHOW ENGINE INNODB STATUS&#xff0c;SHOW PROCESSLIST&#xff0c;SHOW PROFILE 四个命令。命令一&#xff1a;SHOW STAT…

实现线段切割法_切割晶圆及玻璃产品的现代技术与设备

作者&#xff1a;韩卓申科VS1,2&#xff0c;伊凡诺夫VI3&#xff0c;吕鸿图2,4&#xff0c;纳乌莫夫A S2,4&#xff0c;王薇媛4摘要&#xff1a;由于需以各种非金属半导体材料晶圆制造使用价值低之微电子产品&#xff0c;对其加工高精度及品质改善的要求更为严苛&#xff0c;因…

学python最重要的是_Python学习,要选哪个版本?

纵观各大编程语言在 2017 年的发展情况&#xff0c;我们会发现涌现出诸如 Go、Swift 这类后起之秀&#xff0c;而其中最为耀眼的当属 Python。之所以 Python 如此受捧&#xff0c;不仅仅是人工智能、数字科学领域的兴起&#xff0c;而且与其自身的特性必不可分&#xff0c;正应…

cefsharp 加载网页慢_网站访问慢的排查方案(史上最详细)

说实话&#xff0c;比起网站打不开&#xff0c;网站访问慢更让人抓狂。因为造成网站访问慢的因素太多了&#xff0c;一般用户根本无从下手&#xff01;任他千头万绪的问题&#xff0c;从以下三个方面入手&#xff0c;也能轻松破解访问慢的大难题 &#xff1a;响应时间、执行时间…

typescript语法高亮插件_vscode常用插件

插件介绍HTML Snippets > 初级H5代码片段及提示HTML CSS Support > 初级H5代码片段及提示Debugger for Chrome > 让 vscode 映射 chrome 的 debug功能&#xff0c;静态页面都可以用 vscode 来打断点调试jQuery Code Snippets > jquery 重度患者必须品&#xff0c;废…

cfree运行程序错误_C/C++程序调试和内存检测

程序出现错误很正常&#xff0c;一个优秀的程序员必须学会调试&#xff0c;发现错误并改正。减少程序错误最有效的方法是&#xff1a;在敲代码之前&#xff0c;多花点时间思考&#xff0c;如何构造程序&#xff0c;数据结构和算法&#xff0c;尽量把细节提前写下来&#xff0c;…