Docker 安裝學習筆記

Docker安裝

傳送門https://docs.docker.com/,中文翻譯http://widuu.com/docker
官網上介紹的很詳細,基本上各個系統的安裝方法都有

在自己的系統安裝成功後,可以用以下命令從官網下載一個虛擬系統(以ubuntu爲例)

$ docker pull ubuntu

docker鏡像非常小,ubuntu的鏡像大約只有50M
下載成功後,運行以下命令打開虛擬系統的終端

$ docker run -it ubuntu bash 

Docker常用命令

查看系統中所有的容器

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
592376ff3eb8        hello-world         "/hello"            25 seconds ago      Exited (0) 24 seconds ago                       prickly_wozniak

從docker hub上取得鏡像

run命令找不到本地鏡像時會從docker hub尋找該鏡像並下載

$ docker run docker/whalesay cowsay boo

Unable to find image 'docker/whalesay:latest' locally
latest: Pulling from docker/whalesay

e190868d63f8: Downloading 7.013 MB/65.77 MB
e190868d63f8: Downloading 9.717 MB/65.77 MB
0b9bfabab7c1: Download complete 
a3ed95caeb02: Verifying Checksum 
00bf65475aba: Downloading 5.095 MB/37.71 MB
00bf65475aba: Downloading 7.847 MB/37.71 MB
8978f6879e2f: Download complete 
8eed3712d2cf: Download complete 

查看本機中的鏡像

$ docker images
REPOSITORY           TAG         IMAGE ID            CREATED            SIZE
docker/whalesay      latest      fb434121fc77        3 hours ago        247 MB
hello-world          latest      91c95931e552        5 weeks ago        910 B

images將列出所有在本地安裝的鏡像

刪除本機中的鏡像

$ docker rmi -f <REPOSITORY>
$ docker rmi -f <IAMGE ID>

可以根據倉庫名稱或者鏡像ID刪除

執行命令

$ docker run <REPOSITORY> <command>

比如使用docker/whalesay運行cowsay命令

$ docker run docker/whalesay cowsay boo-boo
  _________
 < boo-boo >
  ---------
     \
      \
       \
                     ##        .
               ## ## ##       ==
            ## ## ## ##      ===
        /""""""""""""""""___/ ===
   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
        \______ o          __/
         \    \        __/
           \____\______/

保存docker鏡像到指定目錄

$ docker save <REPOSITORY> -o <outputfile>

Dockerfile

Dockerfile存在於docker鏡像中,用來描述使用軟件的環境和需要執行的命令

創建一個Dockerfile

1.新建一個文件夾

$ mkdir mydockerbuild

這個文件夾將作爲你創建鏡像的環境,即這個文件夾下的文件用於創建鏡像

$ cd mydockerbuild

進入文件夾

2.創建Dockerfile

$ touch Dockerfile

用各種文本編輯器都可以,這裏以vim爲例

$ vim Dockerfile

3.編輯Dockerfile

FROM docker/whalesay:latest

使用FROM 說明docker基於哪一個鏡像

RUN apt-get -y update && apt-get install -y fortunes

使用RUN 執行命令安裝軟件(fortunes這個軟件用於隨機打印一些名人名言)

CMD /usr/games/fortune -a | cowsay

當鏡像所需要的軟件都安裝完之後,使用CMD 命令執行

最終編輯完的Dockerfile中有如下內容:

 FROM docker/whalesay:latest
 RUN apt-get -y update && apt-get install -y fortunes
 CMD /usr/games/fortune -a | cowsay

4.保存Dockerfile

通過Dockerfile創建鏡像

$ docker build -t <REPOSITORY> <PATH>

根據剛纔編寫的Dockerfile創建一個鏡像

$ docker build -t docker-whale .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM docker/whalesay:latest
...
Step 2 : RUN apt-get -y update && apt-get install -y fortunes
...
Step 3 : CMD /usr/games/fortune -a | cowsay
 ---> Running in a8e6faa88df3
 ---> 7d9495d03763
Removing intermediate container a8e6faa88df3
Successfully built 7d9495d03763

docker build 會使用當前目錄下的Dockerfile

運行鏡像

首先查看本機中有哪些鏡像

$ docker images 
REPOSITORY           TAG          IMAGE ID          CREATED             SIZE
docker-whale         latest       7d9495d03763      4 minutes ago       273.7 MB
docker/whalesay      latest       fb434121fc77      4 hours ago         247 MB
hello-world          latest       91c95931e552      5 weeks ago         910 B```

運行Docker鏡像

$ docker run docker-whale
  _________________________________________
 / "He was a modest, good-humored boy. It  \
 \ was Oxford that made him insufferable." /
  -----------------------------------------
           \
            \
             \
                           ##        .
                     ## ## ##       ==
                  ## ## ## ##      ===
              /""""""""""""""""___/ ===
         ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
              \______ o          __/
               \    \        __/
                 \____\______/

Docker Hub

Tag and push 鏡像

$ docker tag <IMAGE ID> YourHubID/repoName
$ docker images 

$ docker login
$ docker push

現在去DockerHub上查看倉庫,可以看到剛剛push的操作

pull 新的鏡像

$ docker run <REPO_name_on_hub>

docker run找不到本地鏡像的話會從HUB上去下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章