1. 程式人生 > >Docker學習筆記(2)——建立實現SSH服務的Docker容器

Docker學習筆記(2)——建立實現SSH服務的Docker容器

為映象新增SSH服務

單純進入本地容器可以通過attach,exec的方法,但是遠端登入到容器內則需要SSH(Secure Shell)的支援。

1.通過docker commit命令建立

進入容器

$ docker run -it ubuntu:latest /bin/bash

更新apt快取,安裝openssh-server(命令如果一遍不成功就再來第二遍)

# apt-get update; apt-get install openssh-server -y

若需要正常啟動SSH服務,則目錄/var/run/sshd必須存在,並啟動SSH服務

# mkdir -p /var/run/sshd
# /usr/sbin/sshd -D &

此時可以使用netstat工具檢視,容器22埠已經處於監聽狀態

# netstat -tunlp(apt-get install net-tools安裝netstat)

修改SSH服務安全登入配置,取消pam登入限制(用到sed編輯器)

# sed -ri 's/session    required    pam_loginuid.so/#session    required    pam_loginuid.so/g' /etc/pam.d/sshd

相當於把整行註釋掉

現在本地主機獲取宿主機公鑰

$ sudo ssh-keygen -t rsa
$ sudo cat /root/.ssh/id_rsa.pub(建立在/root/.ssh/下面)

將那個檔案的內容(公鑰)複製到容器下面檔案裡

# mkdir root/.ssh
# vi /root/.ssh/authorized_keys

建立自動啟動SSH服務的可執行檔案run.sh

# vi /run.sh
# chmod +x run.sh

其中,run.sh指令碼內容如下

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

最後退出容器

# exit

儲存映象

$ docker commit fc1936ea8ceb sshd:ubuntu 

2.通過Dockerfile建立實現ssh服務的映象

建立工作目錄,在其中建立Dockerfile檔案和run.sh檔案

$ mkdir sshd_ubuntu
$ cd sshd_ubuntu/
$ touch Dockerfile run.sh
$ vi run.sh
#!/bin/bash
/usr/sbin/sshd -D
$ ssh-keygen -t rsa
...
$ cat ~/.ssh/id_rsa.pub > authorized_keys
(生成到sshd_ubuntu資料夾下)

編寫Dockerfile檔案:

FORM ubuntu:latest

MAINTAINER docker_user ([email protected])

RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh

RUN sed -ri 's/session    required    pam_loginuid.so/#session    required    pam_loginuid.so/g' /etc/pam.d/sshd

(ADD命令,從Dockerfile所在目錄裡複製authorized_keys檔案添,複製到容器目錄下的/root/.ssh/authorized_keys)
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh

EXPOSE 22

CMD ["/run.sh"]

建立映象,在sshd_ubuntu目錄下,使用docker build命令來建立映象,需要注意最後還有一個”.”

$ cd sshd_ubuntu
$ docker build -t sshd:dockerfile .

通過docker images檢視映象:

發現dockerfile建立的映象大小相比更小一些

相關推薦

Docker學習筆記(2)——建立實現SSH服務Docker容器

為映象新增SSH服務 單純進入本地容器可以通過attach,exec的方法,但是遠端登入到容器內則需要SSH(Secure Shell)的支援。 1.通過docker commit命令建立 進入容器 $ docker run -it ubun

Android學習筆記2 建立另一個activity以及實現intent訊息傳遞

學習內容來自google教程:http://developer.android.com/intl/zh-cn/training/basics/firstapp/starting-activity.html#DisplayMessage 1 在之前的MainActivity基

ESP8266學習筆記2實現ESP8266的局域網內通信

pro reg sad net nts 理解 模式 curl ont 上一篇熟悉了編譯下載操作。如今就以實例入手。project使用的是IOT_DEMO,據DEMO文檔能夠知道ESP8266初始工作模式為softAP+station共存的模式。於是這邊我們就先以soft

Docker學習筆記2-mysql鏡像的使用和外網訪問

雲計算 Docker 1. Pull mysql執行命令docker pull mysql2. 創建mysql容器docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql創建完成後,查看容器運行狀態可以看到m

docker學習筆記-2.docker鏡像制作

比較 etc xitong image dock 大小 docker bubuko img docker鏡像制作 docker鏡像內核 從docker鏡像大小來說,一個比較小的鏡像只有十幾MB,而內核文件需要一百多兆。因此docker鏡像沒有內核。鏡像再被啟動為容器後將直接

Dockerfile構建映象並測試執行(docker學習筆記2)

Dockerfile構建映象並測試執行 1建立Dockerfile 建立一個空目錄,建立一個名為的檔案Dockerfile,將以下內容複製並貼上到該檔案中,然後儲存。記下解釋新Dockerfile中每個語句的註釋。 # 使用官方Python作為執行時父映象 FR

docker學習筆記建立本地映象(三)docker build的結果

docker build -t tonyxinminghui/test:v1 . Sending build context to Docker daemon 586.9 MB Step 1 : FROM ubuntu:latest —> f753

Docker江湖】之建立帶有SSH服務的映象

開啟微信掃一掃,關注微信公眾號【資料與演算法聯盟】 轉載請註明出處:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/

Docker學習筆記(2)——執行nginx

一.下載映象這裡我們使用網易蜂巢來查詢相應的映象:可見右上角就有下載映象的指令啦~下載一波後就可以檢視到這個映象了然後就就執行這個映象:docker run hub.c.163.com/library/nginx執行後發現結果是一片空白,這是為啥呢?因為這樣執行我們只是在前臺

分散式服務框架學習筆記2 常用的分散式服務框架 與 通訊框架選擇

傳統垂直架構改造的核心就是要對應用進行服務化,服務化改造使用到的核心技術就是分散式服務框架。 分散式服務框架演進 應用從集中式走向分散式 大規模系統架構的設計一般原則就是儘可能地拆分,以達到更好的獨立擴充套件與伸縮、更靈活的部署、更好的隔離和容錯、更高的開

Docker學習筆記(2)--Docker常用命令

1. 檢視docker資訊(version、info) # 檢視docker版本 $docker version # 顯示docker系統的資訊 $docker info 2. 對image的操作(search、pull、images、rmi、history) # 檢

Linux運維學習筆記之十:SSH服務

第十八章 SSH服務 一、SSH服務基礎 1、簡介 SSH 為 Secure Shell 的縮寫,由 IETF 的網路工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠端登入會話和其他

JasperReport學習筆記2-建立簡單的報表例子

一,建立簡單的jrxml檔案  Xml程式碼   <?xml version="1.0"?>   <!DOCTYPE jasperReport   PUBLIC "-//JasperReports//DTD Report Design//EN"  

語音學習筆記2------matlab實現傅立葉變換

Matlab是一個在很多科學和工程領域都非常有用的數學工具。傅立葉變換在訊號處理、物理、通訊、地質學、天文學、光學等很多領域都有應用。這個技術將一個函式或是一組資料從時域或是取樣域變換到頻域。這意味著,傅立葉變換可以展示一組時間序列資料的頻率分量。離散傅立葉變換是將取樣域的

Docker學習筆記一:什麽是Docker

服務端 xiaojian lin tex 配置 配置管理 name 定制 logs 什麽是Docker一種容器技術,提供了非常方便的用戶體驗,用戶無需關系底層的操作即可達到對應用進行、封裝、分發、部署和運行的周期管理。容器=cgoup+namespace+文件系統+容器引擎

docker學習筆記:簡單構建Dockerfile【Docker for Windows】

參考與入門推薦:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html#autoid-0-0-9 最近學習docker,寫一個簡單構建Dockerfile的筆記。 我的系統:Windows 10 Docker版本:Docker for Win

Docker學習筆記(一):使用docker搭建LNMP環境

公司使用docker部署伺服器環境,之前沒有接觸過,於是使用阿里雲伺服器學習使用docker,記錄一下學習過程。首先了解Docker,查看了很多網上的資料,說下自己的理解,docker與linux虛擬機器類似,是一個用來把打包好的環境映象放在容器中執行的工具(引擎),dock

Docker學習筆記(十二):Docker Swarm

1. 什麼是Docker Swarm? 容器叢集管理工具。 通過docker swarm可以將多臺機器連線在一起,通過swarm的排程可以服務的多臺機器的部署,服務的伸縮。 2. Docker Swarm 使用入門 1)節點初始化(manager節點) dock

python 學習筆記_2 模擬socket程式設計 服務端、客戶端通訊(參考核心程式設計2程式碼實現)

伺服器端程式碼實現: #!/usr/bin/env python#coding=gbk'''接收客戶端字串,在欄位串前面打上當前時間,然後返回server端採用 python2 linux下除錯執行客戶端採用python3 windows下除錯執行(注意編碼格式)''' from socket impor

EF學習筆記-2 EF之支持復雜類型的實現

nullable dto indent any 裏的 set entityset 指正 實體 使用過.NET的小夥伴們知道,在我們的實體模型中,除了一些簡單模型外,還有一些復雜類型,如幾個簡單的類型組合而成的類型;而EF除了在實現基本的增刪改查之外,也支持復雜類型的實現。