blog.monophile.net

コンピュータのこととかのメモ。

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS] においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

work

各種システム構築と管理を承ります。

Cloud PlatformOpenstack, GCP, AWS, Azure, ...
Openstackkeystone, glance, cinder, swift, neutron, nova, ...
VirtualizationQEMU+KVM, LXD/LXC, Docker, ...
OSDebian GNU/Linux, Ubuntu, CentOS, ...
NetworksIPSec, L2TP, VXLAN, WirelessAP, ...
WebAppsWordPress, GitLab, Redmine, ...
Configuration ManagementAnsible, Terraform, ...
MonitoringNagios, Munin, ...

posts

概要

dockerでsshできるインスタンスを作ったときのメモ。 ansibleで主なインストール作業をするために、Dockerfileはなるべく最小限にした。 ちなみに、Dockerの思想? 的にはsshするのは微妙だが、 中に入ってみることによってわかることもある。 DockerコンテナにおけるsshはHaskellでいうDebug.Trace的な立ち位置。

目標

  • CentOS
  • IP: 192.168.100.10/24
  • .bashrcはイメージ構築時に組み込む(内容は任意)
  • user: pass => root: password

files

ファイル構造は以下の通り

$ tree
.
└── centos
     ├── Dockerfile
     └── .bashrc

Dockerfile

FROM centos
ADD .bashrc /root/.bashrc
RUN yum update -y
RUN yum install -y openssh-server initscripts
RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
RUN echo "password" | passwd --stdin root
RUN /bin/systemctl enable sshd
CMD /sbin/init

docker network

$ sudo docker network create --subnet=192.168.100.0/24 mynet
$ sudo docker network inspect mynet

docker build

$ sudo docker build -t my/centos_ssh ./centos

docker run

$ sudo docker run -d --privileged --name centos_ssh_instance --net=mynet --ip=192.168.100.10 my/centos_ssh

ssh to instance

$ ssh root@192.168.100.10