摘要:,自動構建,表示這個鏡像由的自動構建流程構建的。保存的目錄稱為上下文,會在構建鏡像時將構建的上下文和該上下文的文件和目錄上傳到守護進程。可用略過緩存查看鏡像的每一層參考第一本書
docker入門
主要是docker使用命令docker守護進程 修改守護進程的網絡
sudo docker daemon -H tcp://0.0.0.0:2375 這條命令將docker守護進程 //使用docker_host環境變量 export DOCKER_HOST = "tcp:0.0.0:2375`檢查docker是否運行
sudo status docker //sudo service docker status啟動和關閉
sudo stop docker //sudo service docker stop sudo start docker //sudo service docker startdocker容器操作 查看docker是否正常工作
sudo docker info運行容器
sudo docker run -i -t ubuntu /bin/bash //-i標記保證容器是STDIN開啟的 //-t標記告訴docker要創建的容器分配一個偽tty終端 //ubuntu 指定鏡像 // /bin/bash告訴docker容器要運行什么命令容器命名
docker默認為創建的容器生成一個隨機的名稱,可通過--name標記來給容器命名
sudo docker run --name myName -i -t ubuntu /bin/bash啟動已經停止的容器
sudo docker start myName //也可通過id指定 //也可使用docker restart命令附著到容器上
docker容器重新啟動的時候,會沿用docker run命令時指定的參數來運行,因此上例中重新啟動會運行一個交互式的shell,此外也可以用docker attach重新附著到該容器的會話上
sudo docker attach myName //也可通過id指定創建守護式容器
除了交互式運行的容器,也可以創建長期運行的容器,守護式容器沒有交互式會話,非常適合運行應用程序和服務。
sudo docker run --name daemon_name -d ubuntu /bin/sh -c "while true; do echo hello world;sleep 1;done" //-d 標記docker將容器放在后臺運行 //while循環一直打印hello world查看docker容器
docker ps //查看正在運行的容器 docker ps -a //查看所有的容器查看容器內部
docker logs daemon_name //獲取容器的日志,可通過-f來追蹤日志日志驅動
docker1.6開始,可通過--log-driver選項來控制docker守護線程和容器所有的日志驅動,可以在執行docker守護線程或者執行docker run命令時使用這個選項。
sudo docker run --log-driver="syslog" --name daemon_name -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done" //將daemon_name容器的日志輸出到syslog,導致docker logs命令不會輸出任何東西查看容器內的進程
sudo docker top daemon_name在容器內部運行進程
sudo docker exec -d daemon_name touch /etc/new_config_file //-d 標記運行一個后臺進程 后面明智執行名氣的名字以及執行的命令 sudo docker exec -t -i daemon_name /bin/bash //創建TTY并捕捉STDIN關閉容器
sudo docker stop daemon_name深入容器
sudo docker inspect daemon_name //查看更多容器的信息 //該命令也可用來查看鏡像信息刪除容器
sudo docker rm 80430f8d0921 //通過指定容器id //刪除全部容器 sudo docker rm `sudo docker ps -a -q` //-q標記表示只返回容器的iddocker鏡像 列出docker鏡像
sudo docker images //本地鏡像都保存在docker宿主機的/var/lib/docker目錄i西安,每個鏡像都保存在docker所采用的存儲驅動目錄下面,如aufs或者devicemapper,也可以在/var/bin/docker/containers目錄下看到所有容器拉取鏡像
sudo docker pull ubuntu:12.04運行一個帶標簽的docker鏡像
sudo docker run -t -i --name new_container ubuntu:12:04 /bin/bash查找鏡像
可以通過docker search命令來查找所有docker hub上公共的可用鏡像
sudo docker search puppet NAME DESCRIPTION STARS OFFICIAL AUTOMATED puppet/puppetserver A Docker Image for running Puppet Server. Wi… 75 alekzonder/puppeteer GoogleChrome/puppeteer image and screenshots… 51 [OK]
倉庫名
鏡像描述
stars,用戶評價
official,是否官方,由上游開發者管理的鏡像(如fedora鏡像由fedora團隊管理)。
automated,自動構建,表示這個鏡像由docker hub的自動構建流程構建的。
構建鏡像 構建鏡像有兩種方式docker commit命令
docker build命令和dockerfile文件
現在并不推薦使用docker commit命令,而應該使用更靈活、更強大的dockerfile來構建docker鏡像
一般來說都是基于已有的基礎鏡像,而不是“創建”新鏡像,從0開始可以參考:https://docs.docker.com/develop/develop-images/baseimages/
創建docker hub賬號創建完鏡像之后,可以將鏡像推送到docker hub或者私有的registryzhong,完成這個操作需要在docker hub上創建一個賬號。
https://hub.docker.com/signup
sudo docker login Username: Password: Login Succeeded用docker commit來創建鏡像
//創建一個新容器 sudo docker run -i -t ubuntu /bin/bash //在容器內部安裝一些軟件... //得到剛剛創建容器的id docker ps -l -q 9649de16bffb //提交定制容器 sudo docker commit 9649de16bffb dack/apache2 //檢查新創建的鏡像 docker images dack/apache2 REPOSITORY TAG IMAGE ID CREATED SIZE dack/apache2 latest 2c5cd556c3f2 About a minute ago 209MB
也可以在提交鏡像時指定更多的數據(包含標簽)來詳細描述所做的修改
sudo docker commit -m "A new custom image" -a "dack huang" 9649de16bffb dack/apache2:webserver //-m 提交信息 //-a 作息信息 //dack/apache2:webserver 執行鏡像的用戶名和倉庫名,并為該鏡像增加一個webserver的標簽用Dockerfile構建鏡像
并不推薦用docker commit構建鏡像,相反推薦使用Dockerfile的定義文件和docker build來構建鏡像
Dockerfile使用基本的基于DSL(Domain Specific Language)語法的指令來構建一個docker鏡像,對比docker commit,其更具備可重復性、透明性和冪等性。
保存Dockerfile的目錄稱為上下文,docker會在構建鏡像時將構建的上下文和該上下文的文件和目錄上傳到docker守護進程。這樣docker守護進程就可以直接訪問用戶想在鏡像中存儲的任何代碼、文件或者其他數據。
dockerfile中每條指令從上到下依次執行,大體的流程如下:
docker從基礎鏡像中運行一個容器
執行一條指令,對容器做出修改
執行類似docker commit的操作,提交一個新的鏡像層
docker再基于剛提交的鏡像運行一個新容器
執行下一條指令直至全部執行完畢
所以盡管某一步執行失敗了,還是得到一個可以使用的鏡像
# Version : 0.01 FROM ubuntu:14.04 MAINTAINER dack huang "dack_huang@163.com" RUN apt-get update && apt-get install -y nginx RUN echo "Hi, I am in your container" >/usr/share/nginx/html/index.html EXPOSE 80 FROM //指定基礎鏡像 MAINTAINER //指定鏡像作者 RUN //在當前鏡像中運行的命令,默認在shell里面使用/bin/sh -c執行 EXPOSE //應用程序會使用容器指定的接口
通過docker build構建鏡像
docker build -t="dack/static_web" //-t設置鏡像標簽 //從git倉庫上面構建鏡像 //假設這個git倉庫存在Dockerfile docker build -t="dack/static" git@github.com:dack/docker-static_web
docker將每一步的構建過程都提交為鏡像,所以docker會將之前的鏡像層看成緩存,當修改某個步驟之后再次構建的,docker會直接從該步驟開始。
可用docker build --no-cache略過緩存
docker build --no-cache -t="dack/static_web"
docker history查看鏡像的每一層
[root@dack static_web]# docker history e5f55354c141 IMAGE CREATED CREATED BY SIZE COMMENT e5f55354c141 5 hours ago /bin/sh -c #(nop) EXPOSE 80 0B 66d44cca6536 5 hours ago /bin/sh -c echo "Hi, I am in your container"… 27B 022c0b46f4f8 5 hours ago /bin/sh -c apt-get update && apt-get install… 34.3MB 34d2d2b790f5 5 hours ago /bin/sh -c #(nop) MAINTAINER dack huang "da… 0B 390582d83ead 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B參考3 weeks ago /bin/sh -c mkdir -p /run/systemd && echo "do… 7B
第一本docke書
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27766.html
摘要:與命令不同,使用命令只能創建容器而并不啟動選項鏡像名稱命令參數將標準輸入標準輸出標準錯誤鏈接到容器向容器的添加主機名與地址設置資源分配。輸入命令退出后,容器不會停止,而會繼續運行。命令命令用于以格式顯示容器與鏡像的詳細 docker命令詳解 前言 從技術老大那里聽說了docker,閑下來之后就簡單了解了一下,發現真的是一個好用的不得了的工具。遂周末去圖書館找了下相關資料,學習下姿勢。說...
摘要:同樣地,也有命令可以刪除掛起的鏡像網絡和。命令提供整體磁盤使用率的概況,包括鏡像容器和本地。因此這條命令比命令更局限。鏡像新的鏡像命令也是子命令。筆者最愛的命令莫過于,讓環境一直保持干凈整齊。 Docker 1.13出來已經有一段時間了,新版本添加了許多有用的命令,本文作者從處女座的潔癖(此處有霧)出發,告訴大家一些整理環境的小技巧。打掃房間再也不需費時又費力了,簡單的命令,就可以輕松...
摘要:命令行是與守護進程進行交互的主要工具。感興趣的話,你也可以開發一個,使用與守護進程進行交互就好了。命令行與守護進程如何交互從左至右理解上圖最左側是客戶端,即命令行。而在與上運行時,守護進程事實上運行在虛擬機中。 譯者按: Docker是典型的C/S架構,其守護進程(daemon)與命令行(CLI)是通過REST API進行交互的。 原文: Understanding how the D...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第二篇。總結本章知識介紹了最基本的十五個命令,接下來的教程將會陸續介紹如何在中運行一個應用以及其他的命令。接下來會在本系列教程結束后補充幾篇應用的實例。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第二篇 Part 2: The 15 Commands。 該系列所有文章將參考其他學習...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第二篇。總結本章知識介紹了最基本的十五個命令,接下來的教程將會陸續介紹如何在中運行一個應用以及其他的命令。接下來會在本系列教程結束后補充幾篇應用的實例。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第二篇 Part 2: The 15 Commands。 該系列所有文章將參考其他學習...
摘要:和區別讓用戶可以進入查看輸出等等操作,但是并不會另外啟動一個進程如果你用來退出,同時這個信號會默認情況會啟動另外一個進程來進入,這里的操作是在這個進程下的。 走在通往docker的大道上——docker基礎知識匯總 最后編輯時間:2017年03月09日 1.Docker是什么 Docker是一種新的容器化技術,為應用開發和部署提供一站式容器解決方案,能幫助開發者高效快速的構建應用,實...
閱讀 1354·2021-09-10 10:51
閱讀 2829·2019-08-30 15:54
閱讀 3367·2019-08-29 17:11
閱讀 925·2019-08-29 16:44
閱讀 1390·2019-08-29 13:47
閱讀 1085·2019-08-29 13:47
閱讀 1484·2019-08-29 12:23
閱讀 1037·2019-08-28 18:18