docker容器運行,一般不能ssh,這容器的管理帶來麻煩,下面將介紹如何創建支持ssh的docker鏡像
首先從dock hub 下載 ubuntu的鏡像
命令: docker pull ubuntu
新建一個ssh_ubuntu 目錄
mkdir /ssh_ubuntu
cd /ssh_ubuntu ;touch Dockerfile
vi Dockerfile
Dockerfile內容
FROM ubuntu
MAINTAINER lincoln_zhong
RUN apt-get update
RUN apt-get install -y openssh-server sudo
RUN mkdir -p /var/run/sshd
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers
EXPOSE 22
CMD ["/usr/sbin/sshd" , "-D"]cd /ssh_ubuntu .運行 docker build -t ssh_ubuntu . #ssh_ubuntu是鏡像名稱
運行 docker images
運行一個容器測試 命令: docker run -d --name ssh_ubuntu_test -p 0.0.0.0:10000:22 ssh_ubuntu
命令解析
-d是以守護模式啓動
--name 定義容器名稱
-p是定義端口(上面這個意思是本地主機(宿主機)的10000端口映射到容器的22端口
容器ssh_ubuntu_test 運行成功, 用ssh登入容器測試命令: ssh admin@宿主機IP -p 10000 我這裏是10.10.1.181
ssh [email protected] -p 10000
測試成功
附centos搭建支持ssh的容器dockerfile 內容
# 選擇一個已有的os鏡像作爲基礎
FROM centos# 鏡像的作者
MAINTAINER LINCOLN ZHONG
# 安裝openssh-server和sudo軟件包,並且將sshd的UsePAM參數設置成no
RUN yum install -y openssh-server sudo
RUN sed -ir 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# 添加測試用戶admin,密碼admin,並且將此用戶添加到sudoers裏
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers
# 下面這兩句比較特殊,在centos6上必須要有,否則創建出來的容器sshd不能登錄
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 啓動sshd服務並且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]