docker是什么?
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口,更重要的是容器性能開銷極低。
為什么要用docker?
在沒有用docker之前,我們需要在本地,測試,線上部署相同的環境,相同的軟件每個環境都要安裝一次,並且每來一個新同事,相同的環境有要重新安裝一遍,很麻煩且過於重復。docker可以完美的解決這個問題
用docker之后我們只需要在本地,測試,線上分別安裝相同的docker,然后在本地搭建環境,將搭建好的環境容器生成docker鏡像,只要將這個docker鏡像提供給測試和線上即可構建出相同的環境,在代碼部署上我們可以利用docker數據卷將本地項目目錄文件直接掛載到測試環境中
docker在win7上的安裝
我們在官網上看到docker不能在win7上直接安裝,需要通過docker toolbox來安裝
Requires Microsoft Windows 10 Professional or Enterprise 64-bit. For previous versions get Docker Toolbox.
so,根據官網的介紹我們可以在這里https://docs.docker.com/toolbox/overview/直接點擊Get Docker Toolbox for Windows
按鈕直接下載,如果下載慢的話可以在https://get.daocloud.io/toolbox/下載,我選擇DockerToolbox-18.09.1.exe 這個版本。下載完后可直接雙擊安裝
安裝的過程中需要選擇安裝哪些組件,這里由於我本機已經安裝了git和virtual box,所以就不選了,沒安裝的建議全選
安裝完后桌面上多出docker和kitematic兩個快捷方式
雙擊Docker Quickstart Terminal,由於我們沒有一起安裝git,因此彈出需要我們指定用哪個bash.exe,這里我們選擇本機安裝的Git/bin/bash.exe文件,等一段時間后安裝完成,出現如下界面
執行docker-machine ssh default即可登錄上鏡像
這里docker啟用默認的鏡像,ip為192.168.99.100,我們可以通過xshell登陸上此服務器
default鏡像默認的用戶名是docker密碼是tcuser
至此docker在win7上安裝完成,
docker在win7上的優化
虛擬機的默認存儲位置是C:\Users\Administrator.docker\machine\machines ,后期docke鏡像文件會不斷增加,為了給系統盤減負,最好將磁盤移動到其他位置。
- 在終端中執行docker-machine stop default命令停止default虛擬機
- 通過VirtualBox【管理】->【虛擬介質管理】界面對虛擬磁盤進行復制
更改鏡像倉庫地址
docker默認的鏡像倉庫地址是https://hub.docker.com/,但國內的下載速度太過緩慢,最好使用國內鏡像,
參考http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox設置鏡像加速
docker在mac上的安裝
在docker官網上我們可以直接下載Docker Desktop (Mac) 可直接在https://hub.docker.com/editions/community/docker-ce-desktop-mac下載(需要登錄),下載后雙擊執行docker.dmg正常安裝即可
啟動docker后在系統菜單欄我們可以看到docker標志,說明docker安裝成功
docker鏡像加速
參考http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox設置鏡像加速
docker基本命令
// 列出本地已有鏡像
docker images
// 從遠端下載鏡像
docker pull <image name>
// 使用鏡像創建並啟動一個容器(若本地沒有該鏡像,則會先從遠端下載,每次run都會生成一個容器,嗯,輕量~)
docker run hub.c.163.com/library/hello-world:latest
//列出正在運行的容器
docker ps
// 列出所有容器(包括Exited)
docker ps -a
// 啟動指定的容器
docker start <container id>
// 停止指定的容器
docker stop <container id>
// 停止所有運行中的容器
docker stop $(docker ps -q)
// 刪除指定容器
docker rm <container id>
//刪除所有容器
docker rm $(docker ps -aq)
//停止並刪除容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
// 刪除指定鏡像(刪除鏡像前須先停止並刪除容器)
docker rmi <image id>
// 重啟容器
docker restart <container id>
// 創建一個新的容器並運行一個命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定標准輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
-d: 后台運行容器,並返回容器ID;
-i: 以交互模式運行容器,通常與 -t 同時使用;
-p: 端口映射,格式為:主機(宿主)端口:容器端口
-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
--name="nginx-lb": 為容器指定一個名稱;
--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運行;
-m :設置容器使用內存最大值;
--net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型;
--link=[]: 添加鏈接到另一個容器;
--expose=[]: 開放一個端口或一組端口;
// 交互運行
docker run -it centos /bin/bash
/bin/bash 是進入到linux中命令行
// 進入容器
docker exec -it centos /bin/bash
// 容器拷貝到主機
docker cp <container id>:文件路徑 主機目標路徑
// 主機拷貝到容器
docker cp 主機文件路徑 <container id>:文件路徑
//查看容器IP
docker inspect -f '{{.NetworkSettings.IPAddress}}' centos
win7上文件以數據卷的形式掛載到docker容器中
1.先設置 win7 到 VirtualBox 中 docker 用的那個虛擬機的共享文件夾
填寫好共享文件夾路徑和名稱。如:共享文件夾路徑:E:\ 共享文件夾名稱: e
然后勾選自動掛載和固定分配
2.重啟 docker
3. docker run -it -v /test:/var/www myimage /bin/bash
制作鏡像
在上面的鏡像容器中我們可以搭建自己所需要的各種環境,搭建好后可將這個更改后的容器打包成一個鏡像,並上傳到鏡像倉庫供大家使用
在搭建好環境的容器中退出時我們應當使用ctrl+p+q快捷鍵,而不是exit退出,因為這樣直接退出會關閉當前容器
docker commit :從容器創建一個新的鏡像。
docker commit -a "name" -m "this is profile" <container id> imageName
這里以阿里雲為例,將鏡像推送到Registry
$ sudo docker login --username=jesse131 registry.cn-shenzhen.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/mirror-study/study:[鏡像版本號]
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/mirror-study/study:[鏡像版本號]
從網上拉取上傳的鏡像
$ sudo docker pull registry.cn-shenzhen.aliyuncs.com/mirror-study/study:[鏡像版本號]
如果不想通過網絡拉去鏡像也可以通過U盤拷貝鏡像
導出鏡像到本地
docker save <container id> -o d:/www/centos.tar
加載本地鏡像
docker load -i d:/www/centos.tar