基礎(chǔ)用法
docker run 提示錯誤
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
解決方法:docker 服務(wù)未運行避乏,請開啟:
sudo service docker start
安裝docker web管理界面程序shipyard
shipyard
提供了管理界面管理各種docker資源门怪。
項目地址:https://github.com/shipyard/shipyard旺遮。
安裝方法:
curl -s https://shipyard-project.com/deploy | bash -s
安裝完成后默認登錄用戶名密碼為:admin/shipyard柒啤,界面如下:
docker ps 和docker ps -a
-
docker ps
:列出正在運行的容器。 -
docker ps -a
:列出所有容器,包括正在運行和停止的。
創(chuàng)建守護式容器
守護式
容器是指后臺長期運行的容器葡盗,沒有交互式會話,適合長期運行的服務(wù)啡浊,如web程序觅够。
使用-d
參數(shù)可以將容器放到后臺運行,如:
docker run --name webserver -d nginx
使用阿里云鏡像加速器加速docker
對于使用 systemd (ubuntu 16.04)的系統(tǒng)巷嚣,用 systemctl enable docker
啟用服務(wù)后喘先,編輯 /etc/systemd/system/multi-user.target.wants/docker.service
文件,找到 ExecStart=
這一行廷粒,在這行最后添加加速器地址 --registry-mirror=<加速器地址>
窘拯,如:
ExecStart=/usr/bin/dockerd --registry-mirror=https://v2kdqv13.mirror.aliyuncs.com
注:對于 1.12 以前的版本,dockerd
換成 docker daemon
重新加載配置并且重新啟動评雌。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
檢查加速器是否生效
Linux系統(tǒng)下配置完加速器需要檢查是否生效树枫,在命令行執(zhí)行 ps -ef | grep dockerd
,如果從結(jié)果中看到了配置的 --registry-mirror 參數(shù)說明配置成功景东。
$ sudo ps -ef | grep dockerd
root 5346 1 0 19:03 ? 00:00:00 /usr/bin/dockerd --registry-mirror=https://v2kdqv13.mirror.aliyuncs.com
將宿主機目錄掛在到docker Nginx鏡像進行靜態(tài)網(wǎng)站測試
如宿主機當前目錄為website
砂轻,我們想將其掛在到Nginx容器中,當修改本地website中內(nèi)容時斤吐,站點內(nèi)容隨時刷新為本地內(nèi)容搔涝,啟動掛在方法如下:
docker run -d -p 80:80 --name webserver -v $PWD/website:/usr/share/nginx/html:ro nginx
同時使Nginx容器/usr/share/nginx/html
目錄變?yōu)橹蛔x厨喂。
數(shù)據(jù)卷容器
如果你有一些持續(xù)更新的數(shù)據(jù)需要在容器之間共享,最好創(chuàng)建數(shù)據(jù)卷容器庄呈。
數(shù)據(jù)卷容器蜕煌,其實就是一個正常的容器,專門用來提供數(shù)據(jù)卷供其它容器掛載的诬留。
基本用法
首先斜纪,創(chuàng)建一個名為 dbdata 的數(shù)據(jù)卷容器:
$ sudo docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres
然后,在其他容器中使用 --volumes-from 來掛載 dbdata 容器中的數(shù)據(jù)卷文兑。
$ sudo docker run -d --volumes-from dbdata --name db1 training/postgres
$ sudo docker run -d --volumes-from dbdata --name db2 training/postgres
可以使用超過一個的 --volumes-from 參數(shù)來指定從多個容器掛載不同的數(shù)據(jù)卷盒刚。 也可以從其他已經(jīng)掛載了數(shù)據(jù)卷的容器來級聯(lián)掛載數(shù)據(jù)卷。
$ sudo docker run -d --name db3 --volumes-from db1 training/postgres
注意:使用 --volumes-from 參數(shù)所掛載數(shù)據(jù)卷的容器自己并不需要保持在運行狀態(tài)绿贞。
如果刪除了掛載的容器(包括 dbdata因块、db1 和 db2),數(shù)據(jù)卷并不會被自動刪除籍铁。如果要刪除一個數(shù)據(jù)卷涡上,必須在刪除最后一個還掛載著它的容器時使用 docker rm -v
命令來指定同時刪除關(guān)聯(lián)的容器。 這可以讓用戶在容器之間升級和移動數(shù)據(jù)卷拒名。