Ubuntu18.04環境下Docker安裝和簡單使用


序:

  Docker的出現為測試人員帶來了很大便利,從此再也不用為測試環境搭建一次次的費心費力,可以專心日站了!

  之前斷斷續續裝了、忘了好幾次,時間一長不用就忘了。這次重新找回Docker,特此將流程記錄下來,方便以后查閱,也給小伙伴們提供一下參考!

  內容基礎,大佬請繞路!

 

1、Docker簡介

  Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

                       ------來自百度百科

2、安裝前准備

1)卸載Docker舊版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

2)配置Ubuntu國內鏡像源

默認鏡像源在國外,國內用戶下載速度較慢,故可選擇國內鏡像源如阿里、網易、清華、中科大等,以阿里源為例:

編輯/etc/apt/sources.list文件,插入以下內容(准備備份原文件):

$ sudo vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

(3)更新鏡像源索引:

$ sudo apt-get update

4)更新軟件庫:

$ sudo apt-get upgrade

5)安裝 apt 依賴包,用於通過HTTPS來獲取倉庫:

$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

3、安裝步驟

1)添加Docker官方GPG key並驗證

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
$ sudo apt-key fingerprint 0EBFCD88

2)設置穩定版倉庫,用於下載更新Docker

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

3)再次更新鏡像源索引

$ sudo apt-get update

4)安裝最新版Docker CE(社區版)

$ sudo apt-get install docker-ce

5)啟動Docker

$ sudo service docker start

6)查看Docker運行狀態

$ sudo service docker status

7)注冊Docker 倉庫賬戶ID

網址:https://hub.docker.com/

8)登陸Docker

$ sudo docker login -u 用戶名 -p 密碼

9)驗證Docker是否正常運行

$ sudo docker run hello-world

運行結果如下圖所示,證明Docker安裝成功,運行正常。

 (10)配置國內Docker倉庫(填入以下內容)

sudo vim /etc/docker/daemon.json
{   "registry-mirrors": ["<your accelerate address>"] }

供選擇倉庫:

Docker官方中國區鏡像 https://registry.docker-cn.com

網易163 docker鏡像 http://hub-mirror.c.163.com

ustc的鏡像 https://docker.mirrors.ustc.edu.cn

阿里、daocloud需要注冊,請自行查找。

(11)重啟Docker

 
         
$ sudo service docker restart

12)為普通用戶添加docker啟動權限

 
         
$ sudo usermod -a -G docker $USER

4、常用命令

(1)顯示 Docker 系統信息,包括鏡像和容器數。

$ sudo docker info

(2) Docker Hub 中搜索符合條件的鏡像。

docker search

docker search [options "o">] term

docker search -s django

--automated 只列出 automated build類型的鏡像;

--no-trunc 可顯示完整的鏡像描述;

-s 40 列出收藏數不小於40的鏡像。

(3) Docker Hub 中拉取或者更新指定鏡像。

docker pull

docker pull [-a "o">] [user/ "o">]name[:tag "o">]

docker pull laozhu/telescope:latest

-a 拉取所有 tagged 鏡像 。

(4)將鏡像推送至遠程倉庫,默認為 Docker Hub 

docker push

docker push name[:tag "o">]

docker push laozhu/nginx:latest

(5)列出本地所有鏡像。其中 [name] 對鏡像名稱進行關鍵詞查詢。

docker images

docker images [options "o">] [name]

-a 列出所有鏡像(含過程鏡像);

-f 過濾鏡像,如: -f ['dangling=true'] 只列出滿足dangling=true 條件的鏡像;

--no-trunc 可顯示完整的鏡像ID;

-q 僅列出鏡像ID。

--tree 以樹狀結構列出鏡像的所有提交歷史。

(6)列出所有運行中容器。

docker ps

-a 列出所有容器(含沉睡鏡像);

--before="nginx" 列出在某一容器之前創建的容器,接受容器名稱和ID作為參數;

--since="nginx" 列出在某一容器之后創建的容器,接受容器名稱和ID作為參數;

-f [exited=] 列出滿足exited= 條件的容器;

-l 僅列出最新創建的一個容器;

--no-trunc 顯示完整的容器ID;

-n=4 列出最近創建的4個容器;

-q 僅列出容器ID;

-s 顯示容器大小。

(7)從本地移除一個或多個指定的鏡像。

docker rmi

docker rmi [options "o">]   "o">[image...]

docker rmi nginx:latest postgres:latest python:latest

-f 強行移除該鏡像,即使其正被使用;

--no-prune 不移除該鏡像的過程鏡像,默認移除。

(8)移除容器

docker rm

docker rm [options "o">]   "o">[container...]

docker rm nginx-01 nginx-02 db-01 db-02

sudo docker rm -l /webapp/redis

-f 強行移除該容器,即使其正在運行;

-l 移除容器間的網絡連接,而非容器本身;

-v 移除與容器關聯的空間。

(9)查看指定鏡像的創建歷史。

docker history

docker history  "o">[options]

--no-trunc 顯示完整的提交記錄;

-q 僅列出提交記錄ID。

(10)啟動、停止和重啟一個或多個指定容器。

docker start|stop|restart

docker start|stop "p">|restart [options "o">]   "o">[container...]

-i 啟動一個容器並進入交互模式;

-t 10 停止或者重啟容器的超時時間(秒),超時后系統將殺死進程。

(11)獲取容器運行時的輸出日志。

docker logs

docker logs [options "o">]

docker logs -f -t --tail= "s2">"10" insane_babbage

-f 跟蹤容器日志的最近更新;

-t 顯示容器日志的時間戳;

--tail="10" 僅列出最新10條容器日志。

(12)啟動一個容器,在其中運行指定命令。

docker run

docker run [options "o">]  [ "nb">command]  "o">[arg...]

-a stdin 指定標准輸入輸出內容類型,可選 STDIN/STDOUT / STDERR 三項;

-d 后台運行容器,並返回容器ID;

-i 以交互模式運行容器,通常與 -t 同時使用;

-t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

--name="nginx-lb" 為容器指定一個名稱;

-p 80:80 將容器端口映射到特定主機;

--dns 8.8.8.8 指定容器使用的DNS服務器,默認和宿主一致;

--dns-search example.com 指定容器DNS搜索域名,默認和宿主一致;

-h "mars" 指定容器的hostname;

-e username="ritchie" 設置環境變量;

--env-file=[] 從指定文件讀入環境變量;

--cpuset="0-2" or --cpuset="0,1,2" 綁定容器到指定CPU運行;

--net="bridge" 指定容器的網絡連接類型,支持 bridge /host / none/container四種類型;

(13)重新構建鏡像並生成容器並后台啟動

docker-compose up -d

(14) 進行Docker容器執行交互式操作命令

attach 命令(從這個 stdin 中 exit,會導致容器停止):

docker attach (CONTAINER ID)

exec 命令(從這個 stdin 中 exit,不會導致容器的停止):

docker exec -it (CONTAINER ID) /bin/bash

5、常見錯誤

 (1)需要登錄或pull鏡像不存在

pull access denied for ubantu, repository does not exist or may require 'docker login'

(2)倉庫網絡不通,檢查網絡配置是否有問題,網絡沒問題時考慮更換倉庫

Get https://registry-1.docker.io/v2/: net/http: request canceled

(3)一般由於 /etc/docker/daemon.json 文件配置錯誤造成。

Job for docker.service failed because the control process exited with error

6、學習參考網站

https://docs.docker.com/

https://www.runoob.com/docker/docker-tutorial.html

https://www.cnblogs.com/wushuaishuai/p/9984228.html

https://hub.docker.com/

https://vulhub.org/#/index/

http://vulapps.evalbug.com/

7、介紹語

  Ubuntu18.04環境下Docker安裝配置到這里就結束了,而戰斗才剛剛開始,利用好Docker,測試復現將事半功倍!

  加油吧,少年!

 

此致

    敬禮!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM