容器操作系统类型
Busybox
集成了一百多个最罕用 Linux 命令和工具的软件工具箱.
蕴含cat
echo
grep
find
mount
telnet
等
Busybox 是Linux 零碎的瑞士军刀
Debian/Ubuntu
CentOS/Fedora
CoreOS
官网链接
Linux发行版, 针对容器技术.
创立自定义操作系统的镜像
基于commit 命令创立
反对用户提交本人对容器的批改, 并生成新的镜像. 命令格局为:
docker commit CONTAINER [REPOSITORY[:TAG]]
创立步骤
- 应用OS镜像创立容器
配置软件源为国内软件源, 如 ali
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
- 执行
apt-get update
更新软件包缓存 - 通过
apt-get
装置服务(比方装置 ssh):apt-get install openssh-server
- 创立目录:须要目录
/var/run/sshd
存在, 手动创立:mkdir -p /var/run/sshd
. 此时曾经能够启动服务:/usr/sbin/sshd -D &
- 批改服务配置, 勾销pam登陆限度:
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
其余操作:在 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
其余步骤:创立主动启动的 SSH 服务的可执行文件
run.sh
, 并增加可执行权限:vi /run.sh; chmod +x run.sh
#!/bin/bash/usr/sbin/sshd -D
- 最初, 退出容器
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 cuikaidong@foxmail.com"## 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.listCOPY 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## 减少挂载点/tmpVOLUME /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 编写.