一、鏡像操作
1偷溺、刪除鏡像(先刪除容器):docker?rmi?mysql:latest /?docker?rmi?鏡像id?
2、創(chuàng)建鏡像:
? ? 基于已有鏡像創(chuàng)建 :docker? commit -m '提交信息'? -a? '作者信息'? 容器id? 別名
? ? 基于本地模板導(dǎo)入:?cat?鏡像.tar.gz |?docker?import? -? 別名:版本
3钱贯、存出和載入鏡像:
? ? 存出:docker save -o?導(dǎo)出目錄和文件名.tar? 源鏡像id
? ? 載入:docker?load??<? 導(dǎo)入目錄和文件名.tar
4挫掏、查看本地所有鏡像:docker?images?
5、上傳鏡像:
? ? 創(chuàng)建鏡像標(biāo)簽:docker tag?鏡像id? ?用戶名/別名:版本
? ? 上傳鏡像:?docker?push?用戶名/別名:版本
二秩命、容器操作
1尉共、查看所有正在運(yùn)行的容器或者查看所有容器: docker?ps? /docker?ps? -a /?docker?ps? -a -q(停)
2、創(chuàng)建并運(yùn)行容器:docker?run -it?鏡像id? /bin/bash
? ? docker run?常用屬性
? ? ? ? -a stdin:?指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型弃锐,可選 STDIN/STDOUT/STDERR 三項(xiàng)袄友;
? ??????-d:?后臺(tái)運(yùn)行容器,并返回容器ID霹菊;
? ??????-i:?以交互模式運(yùn)行容器剧蚣,通常與 -t 同時(shí)使用;
? ??????-P:?隨機(jī)端口映射旋廷,容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口
? ??????-p:?指定端口映射鸠按,格式為:主機(jī)(宿主)端口:容器端口
? ??????-t:?為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用饶碘;
? ??????--name="nginx-lb":?為容器指定一個(gè)名稱目尖;
? ??????--dns 8.8.8.8:?指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致扎运;
? ??????--dns-search example.com:?指定容器DNS搜索域名瑟曲,默認(rèn)和宿主一致;
? ??????-h "mars":?指定容器的hostname豪治;
? ??????-e username="ritchie":?設(shè)置環(huán)境變量洞拨;
? ??????--env-file=[]:?從指定文件讀入環(huán)境變量;
? ??????--cpuset="0-2" or --cpuset="0,1,2":?綁定容器到指定CPU運(yùn)行鬼吵;
? ??????-m :設(shè)置容器使用內(nèi)存最大值扣甲;
? ??????--net="bridge":?指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container:?
? ??????--link=[]:?添加鏈接到另一個(gè)容器;
? ??????--expose=[]:?開放一個(gè)端口或一組端口琉挖;
? ??????--volume , -v:?綁定一個(gè)卷
? ??????--restart :?啟動(dòng)策略no 不自動(dòng)重啟容器. (默認(rèn)值) on-failure 容器發(fā)生error而退出(容器退出狀態(tài)不為0)重啟容器,可以指定重啟的最大次數(shù)启泣,如:on-failure:10unless-stopped 在容器已經(jīng)stop掉或Docker stoped/restarted的時(shí)候才重啟容器always 在容器已經(jīng)stop掉或Docker stoped/restarted的時(shí)候才重啟容器,手動(dòng)stop的不算
3示辈、終止/啟動(dòng)/重啟容器:
? ? 終止:docker?stop?容器id docker?kill?容器id? ?
? ? 啟動(dòng):docker?start?容器id?
? ? 重啟:docker?start?容器id
4寥茫、進(jìn)入容器:docker?exec -it?容器id /bin/bash
5、刪除容器:docker?rm? -f? 容器id /?docker?rm -f? name
6矾麻、導(dǎo)入導(dǎo)出容器:
? ? 導(dǎo)出:docker export 鏡像id >文件路徑.tar
? ? 導(dǎo)入:cat 文件路徑.tar? | docker? import? -? 用戶/別名:版本
三纱耻、倉庫
1、登錄?docker login -u 用戶名 -p 密碼
2险耀、搜索鏡像:docker search mysql
3弄喘、下載鏡像:docker pull mysql:latest
4.創(chuàng)建私有倉庫:docker?run -d? -p 5000:5000? -v? /docker/registry:/var/lib/registry?registry
? ??echo '{ "insecure-registries":["ip:5000"] }' > /etc/docker/daemon.json
????docker push ?ip:port/別名
????docker pull? ip:port/別名
四、Dockerfile的使用
1.創(chuàng)建鏡像
????#第一行必須指定基礎(chǔ)鏡像
????FROM centos:7
????#維護(hù)者信息
????MAINTAINER https://blog.51cto.com/andyxu
????#鏡像的操作命令
????#1.ENV 指定一個(gè)環(huán)境變量 設(shè)置時(shí)區(qū)
????ENV TIME_ZOME Asia/Shanghai
????#2.ADD <SRC> <DEST> 添加本地文件到容器 壓縮文件自動(dòng)解壓 src可以為一個(gè)url
????ADD $NV.tar.gz /tmp
????#3.COPY 拷貝本地文件到指定目錄 目的文件不存在時(shí)自動(dòng)創(chuàng)建
????COPY nginx.conf /data/nginx/conf/
????#4.RUN 運(yùn)行命令
????RUN yum -y install gcc gcc-c++ make openssl-devel pcre-devel \
? ? ? ? && mkdir -p /data \
? ? ? ? && cd /tmp/$NV \
? ? ? ? && ./configure --prefix=/data/nginx \
? ? ? ? && make -j 2 \
? ? ? ? && make install \
? ? ? ? && echo "${TIME_ZOME}" > /etc/timezone \
? ? ? ? && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime \
? ? ? ? && rm -rf /tmp/nginx* \
? ? ? ? && yum clean all \
? ? ? ? && yum -y remove gcc gcc-c++ make
????#5.ENTPYPOINT ["ZZZ"] 配置容器啟動(dòng)后執(zhí)行的命令
????#6.VOLUME ["/data"] 創(chuàng)建掛載點(diǎn)
????#7.USER 指定運(yùn)行容器的用戶名字
????#8.WORKDIR 設(shè)置工作目錄 .多個(gè)可用于切換目錄
????#設(shè)置端口
????EXPOSE 80 22 8443
????#容器啟動(dòng)時(shí)執(zhí)行命令 使用 exec執(zhí)行 推薦使用 多個(gè)cmd只執(zhí)行最后一個(gè)
????CMD ["./sbin/nginx","-g","daemon off;"]
2.運(yùn)行鏡像:docker?build? -t? 標(biāo)簽? 文件路徑