docker 安裝卸妝官方說明:
https://docs.docker.com/install/linux/docker-ee/centos/#os-requirements
本系列基於centos, docker映象實現
首先, 執行docker進入bash, 沒啥用, 就讓你看看, 之後exit就行
docker run -i -t -v /root/software/:/mnt/software/ docker.io/centos /bin/bash
# 引數:
# -i:表示以“互動模式”執行容器,-i 則讓容器的標準輸入保持開啟
# -d: 表示容器後臺執行
# -t:表示容器啟動後會進入其命令列,-t 選項讓Docker分配一個偽終端(pseudo-tty)並繫結到容器的標準輸入上
# -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>,-v 標記來建立一個數據卷並掛載到容器裡。在一次 run 中多次使用可以掛載多個數據卷。
# -p:指定對外80埠
# 不一定要使用“映象 ID”,也可以使用“倉庫名:標籤名”
Dockerfile
############################################
# version : Docker version 1.10., build 3999ccb-unsupported
# desc : 當前版本安裝的 vim wget curl openssh-server sudo openssh-clients iproute.x86_64
# 增加免密登陸
############################################ FROM docker.io/centos
MAINTAINER wenbronk "[email protected]" # 一次性安裝vim,wget,curl,ssh server等必備軟體
RUN yum install -y vim wget curl openssh-server sudo openssh-clients iproute.x86_64
RUN mkdir -p /var/run/sshd # 安裝supervisor工具
RUN yum install -y python-setuptools
RUN easy_install supervisor
RUN mkdir -p /var/log/supervisor # 將sshd的UsePAM引數設定成no
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -P '' -f /root/.ssh/id_dsa
RUN cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys # 新增root賬戶的密碼為123456
RUN echo "root:123456" | chpasswd
# 新增測試使用者admin,密碼admin,並且將此使用者新增到sudoers裡
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers # 新增 supervisord 的配置檔案,並複製配置檔案到對應目錄下面。(supervisord.conf檔案和Dockerfile檔案在同一路徑)
COPY supervisord.conf /etc/supervisor/supervisord.conf # 容器需要開放SSH 22埠
EXPOSE # 執行supervisord來同時執行多個命令,使用 supervisord 的可執行路徑啟動服務。
CMD ["/usr/bin/supervisord"]
supervisord.conf檔案
# 配置檔案包含目錄和程序
# 第一段 supervsord 配置軟體本身,使用 nodaemon 引數來執行。
# 第二段包含要控制的 個服務。每一段包含一個服務的目錄和啟動這個服務的命令。 [supervisord]
nodaemon=true [program:sshd]
command=/usr/sbin/sshd -D
注意: add命令使用時, 只能使用相對路徑, 實際測試只能在當前目錄下
構建docker映象, 如果Dockerfile不在路徑下, 則不是 . 而是寫絕對路徑
docker build -t wenbronk/centos .
命令改進
docker run -p 9999:22 -t -i "birdben/tools:v1"
重新構建遇到的坑
在自己電腦上沒事也布一次, 結果怎麼也不行, 搞了2個點, 最後發現是因為yum install -y ...
沒有加 -y
可通過ssh連結進容器進行檢視
ssh [email protected] -p
目前存在一個問題, 進入後不能ssh, 後來查詢查詢到一種方法, 但感覺不好, 尋找更好的方法:
http://blog.csdn.net/rznice/article/details/52253114
解決辦法就是在docker run 的時候執行/usr/sbin/init 。比如:
[root@localhost /]# docker run -tid --name hadoopbase centos/hadoopbase:v001 /usr/sbin/init