Ubuntu下docker安裝及簡單應用

Anumbrella發表於2017-09-21

最近工作了,好久沒用更新部落格了。。在工作中瞭解了docker這個工具。真是好用。折騰了一下,準備記錄一下。那麼docker是什麼?引用百度的話來解釋一下,Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。
docker讓開發的環境可以進行打包釋出,甚至包括系統,你可以釋出自己的映象給大家使用。而且應用部署快速,跨平臺,無論是linux還是Windows,還是mac os x 都支援。除了這些優點,還有很多…你可以慢慢去了解。。

一、 docker的安裝

1、切換到root許可權或者用sudo

2、升級source列表並保證https和ca證書成功安裝

apt-get update
apt-get install apt-transport-https ca-certificates

3、增加新的GPG 金鑰

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

4.新增或編輯source列表裡的docker.list檔案

如果不存在就新增該檔案

vim /etc/apt/sources.list.d/docker.list    

5.按照系統版本增加entry

然後再執行一下 apt-get update

6.更新操作後,刪除老的repo

如果系統中存在較老版本的Docker(lxc-docker),需要刪除,沒有就跳過。其實在安裝服務時,如果有也會提示,選擇“是”即可。

apt-get purge lxc-docker

7.檢視是否有正確的可用版本

apt-cache policy docker-engine

如圖:
可以版本

8.從14.04版本以上開始docker推薦安裝linux-image-extra

apt-get install linux-image-extra-$(uname -r)

9.安裝docker

apt-get update
apt-get install docker-engine
service docker start   //啟動docker服務

最後可以通過docker info 或者 docker version 檢視安裝的資訊
service docker stop //停止docker服務
service docker restart //重啟docker服務

二、 docker常用命令

1、檢查映象或者容器的引數,預設返回 JSON 格式

docker inspect [容器名orID]/[映象名orID]

2、獲取容器執行時的輸出日誌

docker logs [容器名orID]

-f 跟蹤容器日誌的最近更新;
-t 顯示容器日誌的時間戳;
–tail=”10” 僅列出最新10條容器日誌。

3、檢視容器目錄

docker ps   //檢視正在執行的容器
docker ps -a  //檢視所有的容器,包括已經停止的

4.檢視映象目錄

docker images

5、啟動、殺死、停止、刪除(刪除容器必須先停止,再執行刪除)容器

docker start [容器名orID]
docker kill  [容器名orID]
docker stop  [容器名orID]
docker rm    [容器名orID]

6、刪除映象(需要先刪除容器,再刪映象)

docker rmi  [映象名orID]

7、檢視一個映象的歷史

docker history  [映象名orID]

8、啟動容器

  • 啟動容器並啟動bash(互動方式):

    docker run -i -t [映象名orID] /bin/bash
  • 啟動容器以後臺方式執行(更通用的方式):

    docker run -d -it  [映象名orID]

9、附著到容器

  • 附著到正在執行的容器:

    docker attach [容器名orID]
  • 進入正在執行的容器內部,同時執行bash(比attach更好用):

    docker exec -t -i [容器名orID]  /bin/bash

10、從dockerhub檢索image

docker search [映象名]

11、拉取、下載映象(這個速度很慢,後面會講解代理設定)

docker pull [映象名]

12、釋出映象

docker push <namespace>/<image name>

13、檢視docker基礎資訊

  • 檢視docker版本:

    docker version 
  • 檢視docker系統的資訊

    docker info 

14、構建docker映象

  • 通過commit提交改變構建映象

    docker commit  [改變了的容器的ID]  [REPOSITORY:TAG] 

    如:docker commit 6282cee20e5b anumbrella/ubuntu
    當然還可以更詳細一點:
    docker commit -m=”add ssh” –author=”anumbrella” 6282cee20e5b anumbrella/ubuntu:ssh

  • 通過Dockerfile來構建映象

    docker build -t [REPOSITORY:TAG] -f [Dockerfile檔案]  [Dockerfile目錄]

    如: docker build -t anumbrella/ubuntu:ssh -f /docker/ubuntu/Dockerfile /docker/ubuntu

15、儲存、載入docker映象

儲存映象

docker save [OPTIONS] IMAGE [IMAGE...]

將docker的映象打包儲存下載下來。
如:
docker save -o myUbuntu.zip anumbrella/ubuntu:ssh
也可以使用
docker save anumbrella/ubuntu:ssh>myUbuntu.zip

載入映象

docker load [OPTIONS] IMAGE [IMAGE...]

如:
docker load -i myUbuntu.zip
也可以使用
docker load < myUbuntu.zip

三、 docker下安裝ubuntu以及ssh服務進行連結

經過上面的講解,我們對docker的基本知識有了認識。接下來,我們便開始進行一個docker例項。現在假如有一個這樣的需求,公司來了10個實習生,我們需要給他們10個linux伺服器給他們擺弄。現在只有一臺伺服器可以用,當然可以linux分配賬號,來實現。如果需要更徹底完善root,單個人的系統,其實可以用docker來部署。

1、安裝ubuntu系統

在docker的hub倉庫中,有專門的ubuntu系統。我們直接用使用就可以了。

docker search ubuntu

如圖:

2、選擇要拉下了的映象

docker pull ubuntu

這裡可以很很慢,因為映象是在國外。使用映象加速就可以了。

在/etc/docker/daemon.json 檔案並新增上 registry-mirrors 鍵值。如果沒有檔案,則新建一個。鍵值如下:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

重啟服務: service docker restart 。
還有其他的方法,可以看官方的加速連結,連結地址

3、下載完畢後,檢視映象:

docker images
如圖:

4、執行容器

docker run --name iubuntu -t -i -d -p 3316:22 ubuntu

引數: –name 指定生成的容器的名稱
-i: 以互動模式執行容器,保證容器中STDIN是開啟的。通常與 -t 同時使用;
-t: 為容器重新分配一個偽tty終端,通常與 -i 同時使用;
-d: 後臺執行容器,並返回容器ID;
-p:可以指定要對映的IP和埠,但是在一個指定埠上只可以繫結一個容器。支援的格式有 hostPort:containerPort、ip:hostPort:containerPort、 ip::containerPort。
ubuntu 則是映象名稱,映象ID也可以的。

執行後檢視結果如下:

5、進入容器終端安裝ssh服務

docker exec -t -i [容器名orID]  /bin/bash

安裝ssh服務(預設為root許可權使用者):

  • 先執行更新

     apt-get update
  • 安裝ssh-client命令

     apt-get install openssh-client
  • 安裝ssh-server命令

     apt-get install openssh-server
  • 安裝完成以後,先啟動服務

     /etc/init.d/ssh start

啟動後,可以通過“ps -e|grep ssh”檢視是否正確啟動。
如下圖:

  • 最後編輯sshd_config檔案

    vim  /etc/ssh/sshd_config

    將PermitRootLogin xxxx-password 改為 PermitRootLogin yes。
    如果沒有vim,先apt-get install vim。

  • 重啟ssh服務

    service ssh restart
  • 設定ssh密碼

    passwd root
  • 檢視容器ip:

    apt-get install net-tools

    然後輸入ifconfig,檢視容器ip。
    如圖:
    ip

6、ssh連結容器中的系統

退出容器終端exit。
在宿主機中,docker ps -a 命令中可以檢視到容器的埠。在宿主機中,可以使用localhost進行登入,也可以使用剛才ifconfig檢視的ip進行登入。

ssh root@localhost -p 3316

如下圖:

如果要從外部進行登入,就要使用宿主機的ip,埠不變。這樣我們的任務就完成了。接下來,就可以自由玩耍伺服器了。
如下圖:

ssh root@x.x.x.x -p 3316

x.x.x.x就是宿主機的ip地址。

7、提交更改的映象

剛剛我們對容器進行了安裝,可以如果刪掉話。每次都要重新執行上面的操作,所以可以對映象進行提交儲存。

docker commit  [改變了的容器的ID]  [REPOSITORY:TAG] 

如圖:

最後打包了一個Ubuntu的web伺服器映象到阿里雲的hub管理平臺上,包含ssh、apache、mysql等服務,大家可以去pull來學習一下。
地址:映象

相關文章