title: docker基本使用
tags:
- 學(xué)習(xí)筆記
- docker
- linux
以下的命令有的需要root權(quán)限,如果報(bào)錯(cuò)請(qǐng)使用root蔓钟,或加sudo
1永票、添加yum源卵贱。
yum install epel-release –y
yum clean all# yum list
2滥沫、安裝并運(yùn)行Docker。
yum install docker-io –y
systemctl start docker
3键俱、檢查安裝結(jié)果兰绣。
docker info
出現(xiàn)以下xin說(shuō)明信息則表明安裝成功。
docker基本用法
1编振、Docker守護(hù)進(jìn)程管理缀辩。
systemctl start docker #運(yùn)行Docker守護(hù)進(jìn)程
systemctl stop docker #停止Docker守護(hù)進(jìn)程
systemctl restart docker #重啟Docker守護(hù)進(jìn)程
2、鏡像管理踪央。
下載基礎(chǔ)鏡像臀玄,具體操作可參考如何下載docker鏡像膘螟,本文使用的是來(lái)自阿里云倉(cāng)庫(kù)的Apache鏡像竿痰。您可在阿里云docker市場(chǎng)搜索更多鏡像吭露。
# docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
修改標(biāo)簽崭歧,由于阿里云倉(cāng)庫(kù)鏡像的鏡像名稱很長(zhǎng)潭苞,可以修改鏡像標(biāo)簽以便記憶區(qū)分混萝。
# docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1
查看已有鏡像狱杰。
# docker images
強(qiáng)制刪除鏡像屹耐。
# docker rmi –f registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5
3少漆、容器管理臼膏。e121d5f99e1e是執(zhí)行docker images命令查詢到的IMAGE ID,使用docker run命令進(jìn)入容器示损。
# docker run –ti e121d5f99e1e /bin/bash
使用exit可以退出當(dāng)前容器渗磅。run命令加上–d參數(shù)可以在后臺(tái)運(yùn)行容器,—name指定容器命名為apache检访。
# docker run -d --name apache e121d5f99e1e
進(jìn)入后臺(tái)運(yùn)行的容器夺溢。
# docker exec -ti apache /bin/bash
將容器做成鏡像。
# docker commit containerID/containerName newImageName:tag
為了方便測(cè)試和恢復(fù)烛谊,先將源鏡像運(yùn)行起來(lái)后再做一個(gè)命名簡(jiǎn)單的鏡像做測(cè)試风响。
# docker commit 4c8066cd8c01 apachephp:v1
運(yùn)行容器并將宿主機(jī)的8080端口映射到容器里去。
# docker run -d -p 8080:80 apachephp:v1
在瀏覽器輸入宿主機(jī)ip加8080端口訪問(wèn)測(cè)試丹禀,出現(xiàn)以下內(nèi)容則說(shuō)明運(yùn)行成功状勤。
鏡像制作
1鞋怀、準(zhǔn)備dockerfile內(nèi)容。
# vim Dockerfile FROM apachephp:v1 #聲明基礎(chǔ)鏡像來(lái)源MAINTAINER DTSTACK #聲明鏡像擁有者RUN mkdir /dtstact #RUN后面接容器運(yùn)行前需要執(zhí)行的命令持搜,由于Dockerfile文件不能超過(guò)127行密似,因此當(dāng)命令較多時(shí)建議寫(xiě)到腳本中執(zhí)行ENTRYPOINT ping www.aliyun.com #開(kāi)機(jī)啟動(dòng)命令,此處最后一個(gè)命令需要是可在前臺(tái)持續(xù)執(zhí)行的命令葫盼,否則容器后臺(tái)運(yùn)行時(shí)會(huì)因?yàn)槊顖?zhí)行完而退出残腌。
2、構(gòu)建鏡像贫导。
docker build -t webcentos:v1 . # . 是Dockerfile文件的路徑抛猫,不能忽略docker images #查看是否創(chuàng)建成功docker run –d webcentos:v1 #后臺(tái)運(yùn)行容器docker ps #查看當(dāng)前運(yùn)行中的容器docker ps –a #查看所有容器,包括未運(yùn)行中的docker logs CONTAINER ID/IMAGE #如未查看到剛才運(yùn)行的容器孩灯,則用容器id或者名字查看啟動(dòng)日志排錯(cuò)docker commit fb2844b6c070 dtstackweb:v1 #commit 后接容器id 和構(gòu)建新鏡像的名稱和版本號(hào)闺金。docker images #列出本地(已下載的和本地創(chuàng)建的)鏡像docker push #將鏡像推送至遠(yuǎn)程倉(cāng)庫(kù),默認(rèn)為 Docker Hub
3峰档、將鏡像推送到registry败匹。
docker login --username=dtstack_plus registry.cn-shanghai.aliyuncs.com #執(zhí)行后輸入鏡像倉(cāng)庫(kù)密碼docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/dtstack123/test:[鏡像版本號(hào)]docker push registry.cn-shanghai.aliyuncs.com/dtstack123/test:[鏡像版本號(hào)]
在鏡像倉(cāng)庫(kù)能查看到鏡像版本信息則說(shuō)明push成功
其中[ImageId],[鏡像版本號(hào)]請(qǐng)您根據(jù)自己的鏡像信息進(jìn)行填寫(xiě)。
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
title: docker中運(yùn)行mongoDB
tags:
- 學(xué)習(xí)筆記
- docker
- linux
- mongoDB
在docker中使用MongoDB
通過(guò)Docker運(yùn)行Mongo
docker run --name [name] -p 27017:27017 -v /data/db:/data/db -d mongo
-
-v/data/db:/data/db
將主機(jī)的/data/db
文件夾掛載在容器內(nèi)的/data/db
在docker容器中運(yùn)行MongoDB所產(chǎn)生的數(shù)據(jù)會(huì)保存在容器內(nèi)部讥巡,容器停止后數(shù)據(jù)也將隨之消失無(wú)法得到保存掀亩。所以為了將容器中的數(shù)據(jù)持久化,需要使用docker的數(shù)據(jù)卷欢顷,將主機(jī)上的文件夾映射到容器內(nèi)部槽棍。這樣容器運(yùn)行時(shí)所產(chǎn)生的數(shù)據(jù)將會(huì)保存在主機(jī)的文件中。
NOTE: mac os 需要在Docker -> Preferences... -> File Sharing中添加共享的目錄
-p 27017:27017
將容器內(nèi)mongo的默認(rèn)27017
端口映射至主機(jī)的27017
端口-d
后臺(tái)運(yùn)行—auth
開(kāi)啟Mongo的驗(yàn)證
進(jìn)入Mongo shell
在主機(jī)上進(jìn)入
docker exec -it <YOUR-NAME> mongo
設(shè)置管理員/用戶
{
user:'testUser',
pwd:'testPass',
roles:[{role:'readWrite',db:'test'}]
};
end for ;
驗(yàn)證
通過(guò)本地mongo shell 連接遠(yuǎn)程服務(wù)器的mongoDB
mongo xx.xx.xx.xx:xxx/test -u "admin" -p "adminPass"
問(wèn)題
在阿里云上通過(guò)docker運(yùn)行mongo吱涉,在本地使用mongo嘗試連接刹泄,連接不上
MongoDB shell version v3.4.0
connecting to: mongodb://xx.xx.xx.xx:xxxx
2017-09-08T16:16:28.584+0800 W NETWORK [main] Failed to connect to 47.52.30.225:25714 after 5000 milliseconds, giving up.
2017-09-08T16:16:28.587+0800 E QUERY [main] Error: couldn't connect to server xx.xx.xx.xx:xxxx, connection attempt failed :
connect@src/mongo/shell/mongo.js:234:13
@(connect):1:6
exception: connect failed
解決
在本地連接不上遠(yuǎn)程的數(shù)據(jù)庫(kù)是因?yàn)槲覍ocker端口和服務(wù)器端口映射寫(xiě)反了。
出現(xiàn)類似的問(wèn)題應(yīng)該如何排查
- 檢查端口號(hào)配置
- 檢查賬號(hào)密碼設(shè)置
- 檢查阿里云安全組設(shè)置
購(gòu)買的云主機(jī)服務(wù)怎爵,初始的時(shí)候除了ssh外的端口特石,所有對(duì)外的端口都是被屏蔽的。需要去手動(dòng)去阿里云的安全組中將需要用到的端口配置打開(kāi)鳖链,在外網(wǎng)才能訪問(wèn)