close

[取得映像檔]

先從Docker Hub下載作業系統的映像檔

這裡的範例是Ubuntu 16.04映像檔

  sudo docker pull ubuntu:16.04  

完成之後就可以使用了

接下來就可以建立container使用

  sudo docker run -t -i ubuntu:16.04 /bin/bash  

  root@39a3293ebf91:/#  


[列出映像檔]

列出本機上所有的映像檔

  sudo docker images  

 

ubuntu:16.04

橘色的部分是映像檔名稱

藍色的部分是TAG名稱

如果沒有指定TAG,則會選擇預設latest


[修改映像檔]

  root@39a3293ebf91:/#  apt-get update 

  exit  

  sudo docker commit -m "apt get update" -a "dockerP" 39a3293ebf91 pardoununtu/init:v1

之後就會產出新的映像檔id 5322e16a31ce99cff7bb510badc5857246cb5785a985362d6418c232c74b32f3

然後就可以使用新的映像檔來開啟container

  sudo docker run -t -i pardoubuntu/init:v1 /bin/bash  

  root@a9ff5f4d3d6d:/#  


[Dockerfile]

建立一個新目錄和Dockerfile

$ mkdir pardo

$ cd pardo

$ touch Dockerfile

以下是 LNMP 的 Dockerfile

FROM ubuntu:18.04
 
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y curl
RUN apt-get install -y apt-utils
RUN apt-get install -y build-essential
RUN DEBIAN_FRONTEND=noninteractive
RUN apt-get install -y tzdata
RUN apt-get install -y git npm
RUN apt-get install -y php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml php7.2-fpm
RUN apt-get install -y php7.2
RUN apt-get install -y nginx
RUN apt-get install -y mysql-server
RUN apt-get install -y beanstalkd
RUN php -r "readfile('https://getcomposer.org/installer');" | php
RUN mv composer.phar /usr/local/bin/composer

Dockerfile的基本語法

 # 是註解

 FROM 是告訴Docker要以哪個映像檔為基底

 RUN 是執行的指令

完成後 使用 docker build 來建立映像檔

$ sudo docker build -t="pardocch/lnmp" .

其中的 -t 標記tag。 . 是Dockerfile所在路徑(當前目錄)

可以看到 build 指令後執行的操作。它要做的第一件事情就是上傳這個 Dockerfile 內容,因為所有的操作都要依據 Dockerfile 來進行。 然後,Dockerfile 中的指令被一條一條的執行。每一步都建立了一個新的container,在容器中執行指令並提交修改(就跟 docker commit 一樣)。當所有的指令都執行完畢之後,返回了最終的映像檔 id。所有的中間步驟所產生的container都會被刪除和清理。

 

現在可以利用新建立的映像檔產生一個新的container

sudo docker run -t -i pardocch/lnmp /bin/bash

還可以使用 docker tag 來修改映像檔標籤

 sudo docker tag container_id repository:newtag 


[上傳映像檔]

首先,先登入docker hub

 sudo docker login 

輸入完帳號密碼後,在docker hub建立一個repository

 sudo docker tag local-image:tagname new-repo:tagname 
 sudo docker push new-repo:tagname 


[新建啟動Container]

 sudo docker run -t -i pardocch/lnmp /bin/bash 

如果要分配port

 sudo docker run -idt -p 80:80 pardocch/lnmp 

-d 是指再背景執行

sudo docker ps -a 會發現這個container的狀態已經從 Exit XX ago 變成 UP XX minute

如果是想要啟動已經有的container

則打 sudo docker start container_NAMES 

進入container  sudo docker exec -it container_ID /bin/bash 


[Docker Volume]

 sudo docker run -it -v /home/pardo/www:/var/www/html pardocch/lnmp /bin/bash 

/home/pardo/www 是實體上的路徑

/var/www/html 是docker container裡面的路徑

pardocch/lnmp 是image

/bin/bash 是執行指令

 

參考網站1: https://philipzheng.gitbooks.io/docker_practice/content/

參考資料2: https://ithelp.ithome.com.tw/articles/10192397

arrow
arrow
    全站熱搜

    Pardo 發表在 痞客邦 留言(0) 人氣()