首页 > 其他分享 >Docker 基础 - 2

Docker 基础 - 2

时间:2023-01-25 10:46:26浏览次数:61  
标签:sshd run ## 基础 ssh && ubuntu Docker

容器操作系统类型

Busybox

集成了一百多个最常用 Linux 命令和工具的软件工具箱.

包含cat echo grep find mount telnet

Busybox 是Linux 系统的瑞士军刀

Debian/Ubuntu

CentOS/Fedora

CoreOS

官网链接

Linux发行版, 针对容器技术.

创建自定义操作系统的镜像

基于commit 命令创建

支持用户提交自己对容器的修改, 并生成新的镜像. 命令格式为:

docker commit CONTAINER [REPOSITORY[:TAG]]

创建步骤

  1. 使用OS镜像创建容器

  2. 配置软件源为国内软件源, 如 ali

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    
  3. 执行 apt-get update 更新软件包缓存

  4. 通过 apt-get 安装服务(比如安装 ssh): apt-get install openssh-server

  5. 创建目录:需要目录 /var/run/sshd 存在, 手动创建: mkdir -p /var/run/sshd. 此时已经可以启动服务: /usr/sbin/sshd -D &

  6. 修改服务配置, 取消pam登陆限制: sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd

  7. 其他操作:在 root 用户目录下创建 .ssh 目录, 并复制需要登陆的公钥信息(1. 直接从用户目录下的 .ssh/id_rsa.pub 文件拷贝 2. ssh-keygen -t rsa 生成)到 authorized_keys 中: mkdir -p /root/.ssh && vi /root/.ssh/authorized_keys . 公钥信息格式示例如下:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtuqN2zGhhVBTVCCoNa8hPvGu3xo8+UsqG+AxW0jEUvQYhr6/IEXiIAk41HzjeEZVYKGGr08Jh8n5xxmBW4AyH/1DaU1Ej3m0dOuZ09HAUJfY7WnrtO8GrZtQT2KhI6P2pwnOJU3fm6eRLLVzL2oSyhBQ8ca/njwAyHXOVJiPOpO3cokOPa2BzziWqslmFKyWQdaf6rBwYKF+2eoFrVk0QepoJtc6OfgIyuQEi+gJXste6QiPJRYgFQoYlv/bzYnnrG7Zs0qVCi6SfIRF7twVXUNW/hkPbGxsKZTLAvITS3tOR2nRt6pibT46RM/+ebiuT0fZ/e/xl3w4QygGTB2Xl casey@ubuntu
    
  8. 其他步骤:创建自动启动的 SSH 服务的可执行文件 run.sh , 并添加可执行权限: vi /run.sh; chmod +x run.sh

    #!/bin/bash
    /usr/sbin/sshd -D
    
  9. 最后, 退出容器 exit

保存镜像

sudo docker commit <container id> ubuntu-sshd

启动镜像

sudo docker run -p 10122:22 -d ubuntu /run.sh

使用

可以通过 ssh 服务进行连接

ssh <container ip> -p 10122 -l root

使用 Dockerfile 创建(重点关注)

Docker hun 上我的ubuntu-sshd镜像

Dockerfile示例

## OS镜像
FROM ubuntu:16.04

## 维护者
LABEL maintainer="CaseyCui [email protected]"

## 1. 备份官方源
## 2. 创建/var/run/sshd文件夹(正常启动SSH服务需要)
## 3. 创建root用户目录下.ssh目录
RUN mv /etc/apt/sources.list /etc/apt/sources.list.default \
    && mkdir -p /var/run/sshd \
    && mkdir -p /root/.ssh

## 拷贝阿里镜像源信息到/etc/apt/sources.list
COPY sources.list /etc/apt/sources.list

## 拷贝公钥到/root/.ssh目录
COPY authorized_keys /root/.ssh/authorized_keys

## 拷贝运行脚本run-sshd.sh到根目录下
COPY run-sshd.sh /run-sshd.sh

## 1. 安装openssh-server
## 2. 修改时区为**中国/上海**(ubuntu新版本需要安装 *tzdata*,通过**链接**方式使之生效)
## 3. 修改SSH服务的安全登录配置,取消pam登录限制
## 4. run-sshd.sh增加执行权限
RUN apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
        openssh-server \
        tzdata \
    && rm -rf /var/lib/apt/lists/* \
    && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && dpkg-reconfigure -f noninteractive tzdata \  
    && sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd \
    && chmod +x /run-sshd.sh

## 开放端口
EXPOSE 22

## 增加挂载点/tmp
VOLUME /tmp

## 设置启动命令
CMD ["/run-sshd.sh"]

自动化修改时区

ubuntu 16.04 之前:

echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata

ubuntu 16.04 及之后:

&& ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

前提: 需要安装 tzdata 包:

apt-get -yq install tzdata
ENV 环境变量

ENV环境变量全局生效, 有时可能会有负面效果.

如: ENV DEBIAN_FRONTEND noninteractive 会把所有操作设置为非交互式的.

尽量不要像上边那样使用, 建议的用法是: 在有需要时, 和执行的命令一起执行, 如:

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends tzdata # -q: quiet

.dockerignore文件

## 忽略文件夹 .git/
.git

## 忽略临时文件
*.swp

run.sh 脚本

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

创建镜像

在 Dockerfile 目录下执行:

sudo docker build -t caseycui/ubuntu-sshd .

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

标签:sshd,run,##,基础,ssh,&&,ubuntu,Docker
From: https://www.cnblogs.com/east4ming/p/17066729.html

相关文章

  • 第一章 基础算法
    目录1快速排序算法1.2第k个数2归并排序算法2.2逆序对数量3二分3.1数的范围3.2数的三次方根4高精度算法4.1加法4.2减法4.3乘法4.4除法5前缀和与差分5.1一维......
  • LESSON TWO : 前言和基础知识
    前言为何要学习代码?为何要学习这个代码?怎么学习这个代码?可不可以学习这个代码?能做什么,有什么目标?​ 基本的手机应用、简单的PC游戏应用、大数据平台;目标是以爱好为基准......
  • docker内的中文乱码
    docker内终端命令行中文乱码在Dockerfile内添加环境变量方法1#在Dockerfile中修改ENVLANG=C.UTF-8方法2#在Dockerfile中修改echo"LANG=C.UTF-8">>/root/.bas......
  • [Docker] Working With Prebuilt Docker Images
    Pullhttpd:latestimageNormallyyouwanttoattachtheversionhttpd:2.4,becauseeverytimeyouruntheimage,wewiththesameversionisrunning.buthere,......
  • day01 - Linux基础命令
    1.操作系统介绍操作系统的作用:用来整合硬件系统资源常用操作系统: 1.DOS 2.Windows: a.win3.1,win3.2 b.win95 c.win97 d.windowsme e.window......
  • docker磁盘
    docker容器跑久了,其产生的日志可能会占用比较多的空间[root@server1~]#df-h文件系统容量已用可用已用%挂载点devtmpfs475M......
  • Docker 容器添加自定义root ca
    比如如果我们基于了step-ca工具做为我们的ca机制,就会有不可信的问题,业务使用就特别不方便了,以下是一个参考配置实际上很简单就是使用update-ca-certificates更新信息......
  • 2023牛客寒假算法基础集训营3 A-I+K
    A题解知识点:贪心。把所有正偶数除成奇数,即可。(人傻了没加\(x>0\)WA2时间复杂度\(O(n)\)空间复杂度\(O(1)\)代码#include<bits/stdc++.h>usingll=longlon......
  • HTML基础
    零、学习中的补充1、head中的meta<metahttp-equiv="refresh"content="2;url=http://www.baidu.com">这段代码表示2s后当前网页会自动refresh跳转到http://www.baid......
  • 多项式基础运算
    多项式全家桶,但是这个做标题有失风雅。很多地方的严谨证明因为水平不足略过,等之后数学水平提高再回来修正。一些有用的资料:NTT与多项式全家桶-command_block的博客......