1. 程式人生 > 實用技巧 >Docker 入門學習筆記(二)

Docker 入門學習筆記(二)

上篇文化在那個主要在 windows 下安裝了Docker 並學習了官方的簡單指導。接下里按照官方的 Documentation(https://docs.docker.com/docker-for-windows/) 來繼續進行學習。

1 Hello World

(1)開啟命令列終端

(2)檢視 docker 安裝版本

docker --version 
docker -v

(3)拉取 hello-world 映象 (image)

docker pull hello-world 
docker run hello-world

可以直接執行 docker run hello-world 這樣docker 首先會在本地查詢該映象檔案,如果找不到就會到遠端去查詢(相當於會自動 先 pull 在 run )

(4) 檢視當前所有的映象

docker image  ls 

發現有許多映象,有部分使我們沒有去下載但是它自動出現的,是作為上篇文章中的 getting-started 映象的依賴 一起下載下來的。

(5)檢視所有容器

  容器和映象之間的關係相當於物件和類之間的關係。容器是映象具體執行的一個程序,相當於映象是模板,容器是映象的一個例項。

docker container ls --all

(6)docker 的命令後可以加上 --help 來進行檢視幫助文件

(7) 常用命令:

  (a) 檢視正在執行的容器

docker container ls
或
docker ps

  (b)檢視所有容器

docker container ls -a
或
docker ps -a

  (c)停止容器/刪除容器

docker stop containerid
docker rm containerid

  (d)刪除所有非活動的容器

docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')

  (e) 將容器打包成新的映象

docker commit containerid imagename:tag

  (f)將映象匯出到壓縮包檔案中


docker save -o filename imagename
docker save imagename| gzip > filename

docker save imagename >path.rar

  (g)從檔案(壓縮包)中解壓映象

docker load --input filename

docker load < filename

2 進一步使用


(1)拉取 ubuntu 映象

docker run --interactive --tty ubuntu bash

--interactive 則讓容器的標準輸入保持開啟,--tty選項讓Docker分配一個偽終端(pseudo-tty)並繫結到容器的標準輸入上,bash 是表示進入那個ubuntu的映象的容器的shell

檢視 主機名 hostname

主機名和容器ID 繫結

退出 exit

(2)在 docker 中使用 Nginx 伺服器

 docker run  --detach --publish  92:92 --name webserver  nginx 

上述命令也可以簡寫為

 docker run  -d -p  92:92 --name webserver  nginx 

成功啟動,但是出現了和之前一樣的問題,為啥本地埠不能成功訪問。 官方教程中,說的是直接在瀏覽器中訪問 http://localhost:92 即可訪問到 nginx 對應的預設主頁。

在經過查詢資料後,得知,在 Windows 上執行 Docker 相當於先安裝了一個 Linux 虛擬主機然後後在這個虛擬主機中使用 Docker ,所以 localhost 指的是虛擬主機的 Ip 而不是本機IP 。

因此我們需要獲取虛擬主機的 IP 才能訪問到該頁面。具體可以參考另一篇文章(https://www.cnblogs.com/Assist/p/13530409.html

處理之後,上次在使用gettingstarted 這個映象是不能正常訪問的問題也解決了。

3自己製作 docker 容器

根據 koa-demos 來做為示例說明(參考連結http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

首先通過 git 命令下載原始碼

git clone https://github.com/ruanyf/koa-demos.git

cd koa-demos

(1)Dockerfile 檔案

在專案的根目錄下可以通過建立 .dockerignore檔案來忽略對應的檔案或資料夾,這裡該檔案的具體內容為:

.git
node_modules
npm-debug.log

加下來建立 Dockerfile 檔案

FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000

接下來對改檔案進行說明:

(a)FROM node:8.4 代表基礎映象是node:8.4,即意味著次映象是從這個映象基礎上搭建的。

(b)COPY . /app 表示將當前目錄拷貝到映象的 /app 資料夾中

(c)WORKDIR /app 宣告工作目錄是 /app

(d)RUN npm install --registry=https://registry.npm.taobao.org 表示安裝 npm ,RUN 命令要儘量少,能夠用一句命令安裝的儘量用一句命令完成

(e)EXPOSE 3000 表示 將容器的3000 視窗暴露出來

(f)其他常用引數:ARG、ENV、CMD

  ARG:用法 ARG name ;在build docker image 的時候傳值使用。docker build --build-arg name=value

  ENV:ARG name value ;可以在 dockerfile 中使用也可以在 image 和 container 中使用

  CMD:容器開啟後執行對應命令;和 RUN 類似,但是 RUN 可以用多條 CMD 只能用一條,RUN 相當於打包東西進入 image 中,而 CMD 是在容器開啟後執行。指定了CMD命令以後,docker run命令就不能附加命令了,否則會將 CMD 命令覆蓋

(2)構建 image

docker image build -t koa-demo:0.0.1 .

(3) 檢視

docker image ls