在Docker里面安装Ubuntu,并且使用ssh进行连接

创建Ubuntu镜像

1,拉取Ubuntu系统的镜像

docker pull ubuntu

2、查看拉取是否成功

docker images

3,运行容器 

docker run --name 新建的容器的名字 -ti -v /AAA:/BBB -d -p 3316:22 ubuntu(这个是镜像的名字)
  • 宿主机根目录中的AAA文件夹就映射到了容器中去了,两者之间能够共享
  •  –name 指定生成的容器的名称 
  • -i: 以交互模式运行容器,保证容器中STDIN是开启的。通常与 -t 同时使用; 
  • -t: 为容器重新分配一个伪tty终端,通常与 -i 同时使用; 
  • -d: 后台运行容器,并返回容器ID; 
  • -p:可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。 
  • ubuntu 则是镜像名称,镜像ID也可以的。

4,查看容器是否运行成功

  • docker ps -a 查看所有的容器,包含启动和挂起的容器

注意事项

  • 这是一个极度精简的系统,连最基本的wget命令都没有;所以先要apt-get update升级系统和安装apt-get install wget命令

  • 正确退出系统方式:先按,ctrl+p;再按,ctrl+q。绝对不能使用exit或者ctrl+d来退出,这样整个系统就退出了。具体到MAC电脑应该使用control代替ctrl键

  • 退出后 再进入ubuntu
    1、首先用docker ps -a 查找到该CONTAINER ID对应编号(比如:0a3309a3b29e)
    2、进入该系统,使用命令:docker attach 0a3309a3b29e

安装SSH服务

1,进入容器终端

 

docker exec -t -i 新建容器的名字 /bin/bash
  • 或者参见上文的注意事项:退出后,如何进入容器终端

2,执行更新操作

  • apt-get update 进行更新操作

3、安装ssh-client、ssh-server

apt-get install openssh-client
apt-get install openssh-server
  • 等待,输入Y就可以完成完成安装操作

4,安装完成之后,就可以启动服务

/etc/init.d/ssh start

5,查看是否启动成功

ps -e|grep ssh

6,编辑sshd_config文件

  • 需要先安装vim编辑器 apt-get install vim
  • 编辑sshd_config文件,添加一行 PermitRootLogin yes  ,使用Esc + :输入WQ保存修改,退出文件编辑界面

7,重启SSH服务

  • service ssh restart 

8,设置SSH的密码

  • passwd root,这个过程需要输入两遍

9,查看容器的IP地址

  • 先安装net-tools的安装包 apt-get install net-tools
  • 查看ip地址 ifconfig

10,保存修改的镜像

  • docker commit [容器ID/容器名]  [REPOSITORY:TAG]

使用Shell工具进行连接

  • 在本机连接可以用localhost:3316连接也可以用本机IP:3316连接

 

常用命令的补充

查看ubuntu版本

  • cat /etc/issue

ssh相关命令

  • service ssh start 启动
  • service ssh stop 停止
  • service ssh restart 重启

参考链接

  •  docker安装Ubuntu以及ssh连接
  • Docker容器中运行Ubuntu系统
  • Docker端口映射
  • Docker 给运行中的容器设置端口映射的方法
  • 进入Docker的四种方式

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

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

相关文章

Android设计模式之——命令模式

一、介绍 命令模式(Command Pattern),是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框,其实它不是一个很”规范“的模式,不过,就是基于这一点,命令模式相对于其…

C++ 序列化和反序列化学习

定义 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这些过程将会涉及到程序数据转化成能被存储并传输的格式,因此被称为“序列化”(Serializatio…

Android设计模式之——观察者模式

一、介绍 观察者模式是一个使用率非常高的模式,它最常用的地方是GUI系统、订阅——发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以GUI系统来说&#xff0…

Android设计模式之——备忘录模式

一、介绍 备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态,这有点像我们平时说的”后悔药“。备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存…

c++ memory 头文件详细介绍

类 指针特征 pointer_traits (C11) 提供关于指针式类型的信息 (类模板) 垃圾收集器支持 pointer_safety (C11) 列出指针安全模式 (枚举) 分配器 allocator 默认的分配器 (类模板) allocator_traits (C11) 提供关于分配器类型的信息 (类模板) allocator_arg_t (C11) 标签类型…

C++ using的三种使用策略以及具体的用法

Using的使用方法 1,命名空间的使用 为了防止代码冲突,都会使用到命名空间。假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分他们,我们在使用名字之外,不得不使用一些额外的信息&#…

Android设计模式之——迭代器模式

一、介绍 迭代器模式(Iterator Pattern)又称为游标(Cursor)模式,是行为型设计模式之一。迭代器模式算是一个比较古老的设计模式,其源于对容器的访问,比如Java中的List、Map、数组等&#xff0c…

Android设计模式之——模板方法模式

一、介绍 在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变…

Android设计模式之——访问者模式

一、介绍 访问者模式是一种将数据操作与数据结构分离的设计模式,它是《设计模式》中23种设计模式中最复杂的一个,但它的使用频率并不高,正如《设计模式》的作者GOF对访问者模式的描述:大多数情况下,你不需要使用访问者…

C++类模板template <class T>简单使用方法

一个简单的例子 两个数比大小 如果两个数都是int类型 class Compare_int { public :Compare(int a,int b){xa;yb;}int max( ){return (x>y)?x:y;}int min( ){return (x<y)?x:y;} private :int x,y; }; 如果两个数是float类型 class Compare_float { public :Compare(…

Android设计模式之——中介者模式

一、介绍 中介者模式&#xff08;Mediator Pattern&#xff09;也称为调解者模式或调停者模式&#xff0c;Mediator本身就有调停者和调解者的意思。 在日常生活中调停者或调解者这个角色我们见得比较多的是“和事老”&#xff0c;也就是说调解两个有争端的人的角色&#xff0…

C++智能指针中unique_ptr部分内容的讲解

参考链接 std::unique_ptr 介绍 定义位于头文件<memory>std::unique_ptr 是通过指针占有并管理另一对象&#xff0c;并在 unique_ptr 离开作用域时释放该对象的智能指针。 在下列两者之一发生时用关联的删除器释放对象&#xff1a;1&#xff0c;销毁了管理的 unique_pt…

Java基础——Java多线程中sleep()、wait()和notify()

一、sleep()sleep()方法源码&#xff1a;/** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subject to * the precision and accuracy of system timers and schedulers. The thread * does …

Key_handle的学习

代码 一切尽在不言中 #pragma once#include "common/common.h" #include "sdf/sdf.h"#include <memory>namespace sdf {namespace algorithm {class KeyHandle {public:using erased_internal_data_t char; //使用erased_internal_data_t等效于ch…

Java基础——虚拟机结构

一、Java平台结构图二、JVM、JRE和JDK关系JVM&#xff1a;Java Virtual Machine&#xff08;Java虚拟机&#xff09;&#xff0c;负责执行符合规范的Class文件 JRE&#xff1a; Java Runtime Environment &#xff08;java运行环境&#xff09;&#xff0c;包含JVM和类库 JDK&a…

解决 SSH Connection closed by foreign host 问题

用 Xshell 连接服务器总是报错 : Connection closed by foreign host.Disconnected from remote host... 原因可能是 SSH 服务器没设置保活时间间隔 , 具体设置如下 : 操作 # vim /etc/ssh/sshd_config 添加两行 , 或去掉注释 : ClientAliveInterval 60ClientAliveCountMax…

Java基础——synchronized

synchronized重要&#xff01;重要&#xff01;重要&#xff01;重要的事情说三遍&#xff0c;一定要记下来哦。 Java语言的关键字&#xff0c;当它用来修饰一个方法或者一个代码块的时候&#xff0c;能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同…

C++:MAC安装Boost库文件并且使用CLion开发

boost的filestem库 C在17版本的标准库中引入了一个filesystem库&#xff0c;用来处理文件路径&#xff0c;以及文件访问。很多编译器对filesystem库的支持还不是很好。为了解决这个问题&#xff0c;可以临时使用boost::filesystem来替代。其实C17标准中的filesystem库就是从bo…

Java基础——Java异常处理机制

一、引言 try…catch…finally恐怕是大家再熟悉不过的语句了&#xff0c;而且感觉用起来也是很简单&#xff0c;逻辑上似乎也是很容易理解。不过&#xff0c;我亲自体验的“教训”告诉我&#xff0c;这个东西可不是想象中的那么简单、听话。不信&#xff1f;那你看看下面的代码…

clion在使用sqlite3的时候,显示Undefined symbols for architecture x86_64错误的解决办法

显示Undefined symbols for architecture x86_64错误的原因 1、缺少静态库 环境&#xff1a;在模拟器上报错但在真机上能运行成功&#xff0c;而且报的错误来自于第三方库。原因&#xff1a;architecture x86_64 是指模拟器的架构&#xff0c;意思就是 Crypto 变量在模拟器架…