繼 docker 是一個應用程式虛擬化的東西,可以讓服務快速發佈使用 之後
我再來復習一下 docker,以及加上 dockerfile 怎麼使用
安裝 on centos7
yum -y install docker
啟動
systemctl start docker
測試是否成功
docker run hello-world
Hello from Docker! This message shows that your installation appears to be working correctly.
查看有那些 image
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/hello-world latest fce289e99eb9 8 weeks ago 1.84 kB
查看現在啟用記錄 (含正在跑 UP、停掉的 Exited 等等)
docker ps -a
我們開始執行連入一個純 centos (當下從網路下載下來,也可事前 docker pull centos)
docker run -it centos bash
以上是執行完就連入 centos 了
進入後我要安裝常用工具 (因為這 image 也才 2 百多 MB,有些工具是並沒有的)
yum install net-tools lsof wget -y
我這裡順便裝上 apcache 執行 PHP 看看
yum install php mod_php httpd -y systemctl enable httpd
但當我要
systemctl start httpd
卻出現
Failed to get D-Bus connection: Operation not permitted
解決方式
docker run -d --name centoscross --privileged centos init
再用 exec 進去 (不能用 attach ,不然會停住,想 Ctrl + C 後,這個 container 會 Exited)
docker exec -it centoscross bash
以上我們多給了 –name 名稱,讓下次只要用這個 名稱 來連入即可,不然就要用 containerid
或者可以事後用 rename (XXXXX 是從 docker ps -a 看到的 NAMES)
docker rename XXXXXX centoscross
此時我們就可以 systemctl start httpd 了
再來寫個 dockerfile,用 dockerfile 是要直接產生一個新的 images,也加上一些自己的東西在裡面,它就批次處理完畢,我們這裡是以 centos:latest 為基底
dockerfile 要放在空的目錄底下,不然同目錄底下的檔案也會被參進去
mkdir dockertest cd dockertest
vi dockerfile
FROM centos:latest MAINTAINER cross RUN yum install net-tools lsof wget -y RUN yum install php mod_php httpd -y RUN systemctl enable httpd RUN echo '<?php phpinfo();?>' > /var/www/html/index.php
再來 build 成全新的 image,並給 centos:cross (名稱+TAG)
docker build -t centos:cross ./
這時後就產生一個 image
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos cross e4be5075949a 14 hours ago 408 MB
連入
docker run -d --name centoscross --privileged centos:cross init docker exec -it centoscross bash
或者加上 port mapping
docker stop centoscross # 先停掉 docker rm centoscross # 先刪除,不然 centoscross 已被佔用了 docker run -d --name centoscross --privileged -p 8080:80 centos:cross init
就可瀏覽 http://1.1.1.1:8080/
留言