1. 程式人生 > 實用技巧 >教你怎麼半天搞定Docker

教你怎麼半天搞定Docker

教你怎麼半天搞定Docker

首先,不要把docker想的那麼高大,它不就是先做個映象,然後通過docker像虛擬機器一樣跑起來嘛...docker其實在真實業務場景中還是非常有侷限性的。Dockerfile指令碼也沒那麼好寫,有些應用也沒有那麼好安裝。

廢話不多說,教你半天搞定docker!

安裝依賴和docker

安裝docker,不建議直接使用Docker官方的yum install docker

wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm

wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.el7.centos.x86_64.rpm
wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-debuginfo-1.12.6-1.el7.centos.x86_64.rpm

yum localinstall -ydocker-engine-selinux-1.12.6-1.el7.centos.noarch.rpmdocker-engine-1.12.6-1.el7.centos.x86_64.rpm

docker-engine-debuginfo-1.12.6-1.el7.centos.x86_64.rpm

開機啟動項

systemctl enable docker

啟動docker

servicedockerstart

搜尋公開容器映象

docker search centos6.6

支援模糊搜尋,但不要想著公開的容器有多好,適合公司業務的還是需要自己搭建。

NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
liangtong/centos6.6-httpd                                                             2                    
incu6us/centos6.6-with-nginx          Wav server for FreeCall                         0                    [OK]
eliezio/centos6.6-devtoolset2-gtest   Docker image based on Centos 6.6 suitable ...   0                    [OK]
chrisgeorge/centos6.6-py2.6           CentOS 6.6 with Python 2.6                      0                    [OK]
leonion/centos6.6                     centos6.6                                       0                    
heilee/centos6.6                                                                      0                    
karthi12345/centos6.6                                                                 0                    
kalramain/centos6.6-mysql55           mysql5.5 installed on centos6.6                 0                    

載入映象容器

dockerpullchrisgeorge/centos6.6-py2.6<NAME>

試執行

dockerrun -i-t chrisgeorge/centos6.6-py2.6/bin/bash

docker run -it

這樣就互動登入到你預先設計好的容器裡面去了

安裝應用
yum install openssh-server
#需要修改/etc/ssh/sshd_config檔案中內容
PermitRootLogin yes
UsePAM no
ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
mkdir /var/run/sshd
passwd 登入密碼
/etc/init.d/sshd start

更新映象
docker commit ID <name>

刪除映象

#dockerrmi<neme>

docker rmi -f
啟動
docker run -d -p 22 -p 8022:8000 chrisgeorge/centos6.6-py2.6 /usr/sbin/sshd -D

--restart=always自動重啟(始終)

將容器8000埠對映到docker伺服器8022埠,將容器22埠隨機對映埠

[root@SERVER docker]# docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                                           NAMES
0c65edbc3f3d        wy                  "/usr/sbin/sshd -D"   22 minutes ago      Up 22 minutes       0.0.0.0:32769->22/tcp, 0.0.0.0:8022->8000/tcp   mad_poitras


備份映象
docker save chrisgeorge/centos6.6-py2.6 >/root/docker-pmd.tar


還原映象
docker load < /root/docker-pmd.tar

想跑起來映象,就必須每臺機子裝有docker。

Dockerfile

指令碼:/home/docker/Dockerfile

FROM chrisgeorge/centos6.6-py2.6 #繼承的父容器 
MAINTAINER wonter  #作者
RUN yum install nginx  #在新的容器裡安裝nginx
RUN echo "root:root" | chpasswd #設定密碼
EXPOSE 22 #設定埠
CMD /etc/init.d/nginx start #啟動服務

# dockerbuild -twonter .

#刪除docker歷史容器

docker ps -a -q | xargs docker rm

-v 掛載沒有許可權

su -c "setenforce 0"