-
docker run -d -p 80:80 xbf/hello-nginx? (這次成功了,返回了容器的id)
curl http://localhost? 測試一下,輸出了index.html的內(nèi)容
Dockerfile語法小結(jié)
FROM? ?用途? base image(指定基礎(chǔ)鏡像名,從哪里開始)
RUN? 執(zhí)行命令(在容器內(nèi)執(zhí)行命令)
ADD 添加文件(往容器里面添加文件,還可以將遠(yuǎn)程的文件添加到容器里面去)
COPY 拷貝文件 (往容器里面添加文件)
CMD 執(zhí)行命令(給容器指定執(zhí)行的入口,通常和engine point來做這個事情)
EXPOSE 暴露端口
WORKDIR 指定路徑(指定我們運行命令的路徑)
MAINTAINER 維護(hù)者
ENV 設(shè)定環(huán)境變量(為容器里面設(shè)置環(huán)境變量)
ENTRYPOINT 指定容器入口(在沒有指定engine point的時候用cmd啟動,如果指定了engine point,cmd所指定的字串就變成entry point后面的一些 arguments(參數(shù)))
USER 指定用戶(指定執(zhí)行該命令的用戶,通常不會用root在容器里面執(zhí)行)
VOLUME? 用途mount point (指定容器掛在的卷)
查看全部 -
第二個Dockerfile
FROM ubuntu? //基礎(chǔ)鏡像
MAINTAINER xbf
RUN apt-get update? ? ? ? ? ? ? //ubuntu命令
RUN apt-get install -y nginx? ? ? ? ?//ubuntu命令,安裝nginx
COPY index.html /var/www/html? ? //拷貝一個本地的文件到這個里面去
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] //給出一個入口
EXPOSE 80
實際操作
mkdir dockerfile2
cd docker dockerfile2
touch Dockerfile
vim Dockerfile
在文件里面編輯
FROM ubuntu
MAINTAINER xbf
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list? //使用國內(nèi)鏡像
RUN apt-get update? //更新ubuntu程序的庫
RUN apt-get install -y nginx //安裝nginx -y 不要提醒
COPY index.html /var/www/html //拷貝文件到容器里面去。這丫是容器?不同版本的ubuntu這個文件夾的位置是不一樣的
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]? //將nginx在前臺執(zhí)行,而不是作為守護(hù)進(jìn)程執(zhí)行
EXPOSE 80? //暴露一個80端口,普通的http服務(wù)器監(jiān)聽的端口
保存文件。
touch index.html
vim index.html? //然后隨便填點東西用來顯示。保存退出
docker build -t xbf/hello-nginx .
docker run -d -p 80:80 xbf/hello-nginx? //-d 守護(hù)進(jìn)程化
報錯了,原因可能很久以前運行過了監(jiān)聽80端口的程序
docker ps
docker stop big_shannon
查看全部 -
docker commit 是創(chuàng)建了一個新的鏡像(新的image),這是說image被叫做鏡像?
Docker file
通過編寫簡單的文件自創(chuàng)docker鏡像
FROM alpine:latest? ?//創(chuàng)建基礎(chǔ)鏡像
MAINTAINER xbf? ? ?//說明是誰創(chuàng)建的鏡像
CMD echo 'hello docker'? //運行一個docker命令
mkdir d1
cd d1
touch Dockerfile
vim Dockerfile
在Dockerfile里面編輯
FROM alpine:latest? // alpine是針對docker做的極小的Linux環(huán)境,image非常小
MAINTAINER xbf
CMD echo "Hello Docker"
保存,退出文件
使用docker命令構(gòu)建新的image
docker build -t hello_docker .? ? (-t 是給個tag 標(biāo)簽,. 是一個路徑名,把這個路徑底下的所有內(nèi)容都送給docker engine,讓它產(chǎn)生image)
這就完成了,成功的通過Docker創(chuàng)建了自己的image。
docker images hello_docker? 查看這個image
docker run hello_docker 運行這個docker(輸出了Hello Docker)
查看全部 -
Doctor的架構(gòu)
Doctor命令
doctor run ubuntu echo hello docker (使用ubuntu這個image運行echo hello docker)
docker images? (查看本機(jī)所有的Image,這個Image該怎么解釋呢)
docker run -p 8080:80 -d daocloud.io/nginx? ?-p端口映射,將nginx的80端口映射到本地的host的8080端口 -d允許這個程序直接返回,就是把這個continer當(dāng)作守護(hù)進(jìn)程來執(zhí)行。在本地8080端口開啟了nginx服務(wù)
docker ps 查看當(dāng)前正在運行的container
cat index.html (然后編輯了一個簡單的html內(nèi)容)
docker? cp index.html 容器id://usr/share/nginx/html 把這個文件拷貝到容器里面去,容器id后面跟的是文件在容器內(nèi)部的路徑。瀏覽器localhost:8080 顯示了index.html的內(nèi)容。這就是容器里面的一個網(wǎng)頁被我們替換了?
docker stoop 容器id? ?停止容器
再次執(zhí)行上面的黑體命令,瀏覽器訪問localhost:8080 沒有顯示html的內(nèi)容,不是我們想要的。原因:docker在容器內(nèi)做的改動都是暫時的,都是缺省沒有被保存下來的,要保存下來需要做另外的操作。
docker ps 查看容器id,這個id應(yīng)該是每次重啟后都會變。
然后把index.html文件又拷貝進(jìn)了容器(同上)
docker commit -m '備注'? 容器id? nginx-fun(保存,好像git提交)。提交后產(chǎn)生了一個新的imageid,這個image究竟該怎么翻譯?nginx-fun是這個新產(chǎn)生的image的名字,不添加名字的話 image的repository和tag都是空的。
docker rmi? image的id? ?刪除image
docker ps (顯示正在運行的容器)
docker stop 容器id 停止正在運行的容器
docker ps -a (顯示所有的容器)
運行過的docker在系統(tǒng)里面還是有歷史,就像剛才運行過的容器就在里面
docker rm 容器id 容器id? ?這兩個就被刪除了
命令小結(jié):
docker pull 獲取image
docker build 創(chuàng)建image
docker images 列出image
docker run 列出container
docker ps 列出container
docker rm 刪除container
docker rmi 刪除Image
docker cp 在host和container之間拷貝文件
docker commit 保存改動為新的image
查看全部 -
Doctor安裝
linux下:sudo wget -qO- https://get.doctor.com/ |?sh (安裝doctor)
? ? ? ? ? ? ? ?sudo usermod -aG docker 用戶名 (允許非root用戶使用doctor)
查看全部 -
Doctor:可以粗糙的理解為輕量級的虛擬機(jī),開掛的chroot。
查看全部 -
根據(jù)現(xiàn)有的 image 生成一個一模一樣的鏡像,只是name 不一樣
docker?tag?docker/whalesay?xibeifeng/whalesay
將本地的鏡像共享到? docker 中心
docker?push?xibeifeng/whalesay
查看全部 -
運行 nginx:
docker run -d --name nginx -v /usr/share/nginx/html nginx
-d 是運行方式(Daemon守護(hù)進(jìn)程)
使用 inspect 檢查 nginx:
docker inspect nginx
inspect 是檢查的意思
查看全部 -
Docker結(jié)構(gòu)
查看全部 -
docker file里面的內(nèi)容
FROM?alpine:latest MAINTAINER?XBF CMD?echo?"Hello?Docker!"
構(gòu)建 docker的images
docker?build?-t?ImagesName?.
查看全部 -
常用的 docker 命令
查看全部 -
創(chuàng)建新的 image
docker?commit?-m?'fun'?容器ID?鏡像名稱 docker?commit?-m?'fun'?e7c34??nginx-func
查看全部 -
//?將文件拷貝到?docker?容器中 docker?cp?index.html?容器ID://usr/share/nginx/html
查看全部 -
Dockerfile 語法
查看全部 -
docker命令2
查看全部
舉報