-
docker run -d -p 80:80 xbf/hello-nginx? (這次成功了,返回了容器的id)
curl http://localhost? 測試一下,輸出了index.html的內容
Dockerfile語法小結
FROM? ?用途? base image(指定基礎鏡像名,從哪里開始)
RUN? 執行命令(在容器內執行命令)
ADD 添加文件(往容器里面添加文件,還可以將遠程的文件添加到容器里面去)
COPY 拷貝文件 (往容器里面添加文件)
CMD 執行命令(給容器指定執行的入口,通常和engine point來做這個事情)
EXPOSE 暴露端口
WORKDIR 指定路徑(指定我們運行命令的路徑)
MAINTAINER 維護者
ENV 設定環境變量(為容器里面設置環境變量)
ENTRYPOINT 指定容器入口(在沒有指定engine point的時候用cmd啟動,如果指定了engine point,cmd所指定的字串就變成entry point后面的一些 arguments(參數))
USER 指定用戶(指定執行該命令的用戶,通常不會用root在容器里面執行)
VOLUME? 用途mount point (指定容器掛在的卷)
查看全部 -
第二個Dockerfile
FROM ubuntu? //基礎鏡像
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? //使用國內鏡像
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在前臺執行,而不是作為守護進程執行
EXPOSE 80? //暴露一個80端口,普通的http服務器監聽的端口
保存文件。
touch index.html
vim index.html? //然后隨便填點東西用來顯示。保存退出
docker build -t xbf/hello-nginx .
docker run -d -p 80:80 xbf/hello-nginx? //-d 守護進程化
報錯了,原因可能很久以前運行過了監聽80端口的程序
docker ps
docker stop big_shannon
查看全部 -
docker commit 是創建了一個新的鏡像(新的image),這是說image被叫做鏡像?
Docker file
通過編寫簡單的文件自創docker鏡像
FROM alpine:latest? ?//創建基礎鏡像
MAINTAINER xbf? ? ?//說明是誰創建的鏡像
CMD echo 'hello docker'? //運行一個docker命令
mkdir d1
cd d1
touch Dockerfile
vim Dockerfile
在Dockerfile里面編輯
FROM alpine:latest? // alpine是針對docker做的極小的Linux環境,image非常小
MAINTAINER xbf
CMD echo "Hello Docker"
保存,退出文件
使用docker命令構建新的image
docker build -t hello_docker .? ? (-t 是給個tag 標簽,. 是一個路徑名,把這個路徑底下的所有內容都送給docker engine,讓它產生image)
這就完成了,成功的通過Docker創建了自己的image。
docker images hello_docker? 查看這個image
docker run hello_docker 運行這個docker(輸出了Hello Docker)
查看全部 -
Doctor的架構
Doctor命令
doctor run ubuntu echo hello docker (使用ubuntu這個image運行echo hello docker)
docker images? (查看本機所有的Image,這個Image該怎么解釋呢)
docker run -p 8080:80 -d daocloud.io/nginx? ?-p端口映射,將nginx的80端口映射到本地的host的8080端口 -d允許這個程序直接返回,就是把這個continer當作守護進程來執行。在本地8080端口開啟了nginx服務
docker ps 查看當前正在運行的container
cat index.html (然后編輯了一個簡單的html內容)
docker? cp index.html 容器id://usr/share/nginx/html 把這個文件拷貝到容器里面去,容器id后面跟的是文件在容器內部的路徑。瀏覽器localhost:8080 顯示了index.html的內容。這就是容器里面的一個網頁被我們替換了?
docker stoop 容器id? ?停止容器
再次執行上面的黑體命令,瀏覽器訪問localhost:8080 沒有顯示html的內容,不是我們想要的。原因:docker在容器內做的改動都是暫時的,都是缺省沒有被保存下來的,要保存下來需要做另外的操作。
docker ps 查看容器id,這個id應該是每次重啟后都會變。
然后把index.html文件又拷貝進了容器(同上)
docker commit -m '備注'? 容器id? nginx-fun(保存,好像git提交)。提交后產生了一個新的imageid,這個image究竟該怎么翻譯?nginx-fun是這個新產生的image的名字,不添加名字的話 image的repository和tag都是空的。
docker rmi? image的id? ?刪除image
docker ps (顯示正在運行的容器)
docker stop 容器id 停止正在運行的容器
docker ps -a (顯示所有的容器)
運行過的docker在系統里面還是有歷史,就像剛才運行過的容器就在里面
docker rm 容器id 容器id? ?這兩個就被刪除了
命令小結:
docker pull 獲取image
docker build 創建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:可以粗糙的理解為輕量級的虛擬機,開掛的chroot。
查看全部 -
根據現有的 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守護進程)
使用 inspect 檢查 nginx:
docker inspect nginx
inspect 是檢查的意思
查看全部 -
Docker結構
查看全部 -
docker file里面的內容
FROM?alpine:latest MAINTAINER?XBF CMD?echo?"Hello?Docker!"
構建 docker的images
docker?build?-t?ImagesName?.
查看全部 -
常用的 docker 命令
查看全部 -
創建新的 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
查看全部
舉報