Previous Article Next Article docker 複習及加上使用 dockerfile 一鍵跑到完
Posted in Linux

docker 複習及加上使用 dockerfile 一鍵跑到完

docker 複習及加上使用 dockerfile 一鍵跑到完 Posted on 2019 年 03 月 01 日Leave a comment

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/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *