序:
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://www.runoob.com/docker/docker-tutorial.html
https://www.cnblogs.com/wushuaishuai/p/9984228.html
7、介紹語
Ubuntu18.04環境下Docker安裝配置到這里就結束了,而戰斗才剛剛開始,利用好Docker,測試復現將事半功倍!
加油吧,少年!
此致
敬禮!