1.個人理解docker:
1.下載別人的鏡像,在鏡像裡面安裝自己的東西
2,編寫dockerfile,創建自己的鏡像
Dockerfile的基本結構:一般包括基礎鏡像,維護者信息,鏡像操作指令,容器執行指令 #是注釋
創建Dockerfile
注意:這裡要注意創建的時候,Dockerfile中的D必須是大寫,具體原因不明
打包指令:
docker build -t demo:1.0 . -f /path
-f:是Dockerfile文件所在的目錄
. demo1.0後面必須要加點
FROM 指定基礎鏡像,並且必須是第一條指令,如果不以任何鏡像為基礎,那麼寫法為FROM scratch ,可以設定版本號,默認是latest最新版本
RUN 此功能為創建容器的時候運行的指令,但是注意不要寫過多的run,每一個指令,都會建立一層鏡像,過多會造成鏡像的臃腫,多層,不僅僅增加了構件部署的時間,還多出錯,RUN書寫的時候的換行符是
CMD功能為容器啟動後要運行的命令,
LABEL為鏡像指定標籤,這個不知道有什麼用。LABEL version="1.0" description="這是一個web伺服器" by="it筆錄"
MAINTAINER:指定作者:
EXPOSE 暴露容器運行時的監聽埠給外部,但是EXPOSE並不會事容器訪問主機的埠,如果使得容器與主機的埠有映射關係,必須在容器啟動的時候加上-p參數
EXPOSE 80 90 91...
ENV 此功能設置黃靜變數語法:ENV key value ENV key=value
ADD 複製指令,COPY複製指令
ADD src dest src可以事一個本地文件也可以是一個本地壓縮文件或者url,當時url的時候相當於weget ,dest是容器內的絕對路徑,可以是工作目錄的相對路徑
COPY src dest src只能是本地文件
ADD與COPY區別:
ADD會自動解壓,但是文件夾會產生一個長串的數字,所以還是先將文件夾解壓之後copy到容器裡面
注意:如果想要add,copy,文件必須在Dockerfile在同一個根目錄中,如果不在同一個目錄中,會產生
ADD failed: stat /var/lib/docker/tmp/docker-builder562406652/test_input.txt: no such file or directory
VOLUME可實現掛載功能
WORDDIR設置工作目錄:為後續命令執行目錄
ENTRYPOINT 啟動的時候的命令:
ENTRYPOINT mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/log --logappend --port=27017 --fork
ENTRYPOINT 和CMD的區別:CMD是默認的,當沒有設定ENTRYPOINT 的指令的時候,運行CMD的指令
下面執行打包命令就能看到上述的成功指令,但是要注意我寫的幾個注意
docker run 和docker start的區別:
docker run 只在第一次運行時使用,將鏡像放到容器中,以後再次啟動這個容器時,只需使用命令docker start即可
docker run相當於執行了兩步操作:將鏡像放入容器中(docker create),然後將容器啟動,使之變成運行時容器(docker start)。
而docker start的作用是,重新啟動已存在的鏡像。也就是說,如果使用這個命令,我們必須事先知道這個容器的ID,或者這個容器的名字,我們可以使用docker ps找到這個容器的信息。
因為容器的ID是隨機碼,而容器的名字又是看似無意義的命名,我們可以使用命令
docker rename old_name new_name
複製文件到docker容器中:複製文件需要容器的長id
獲取長id的辦法:docker ps 找到短id,docker inspect 短id獲取到長id
docker inspect 短id | grep id grep:是一個強大的文本搜索工具
docker cp /usr/XXX 長id:/usr/XXX
從docker容器中複製文件到主機中:
docker cp my_mongo:1.0.1:/usr/XXX /usr(主機路徑)
退出容器:ctrl+d退出並關閉容器 ctrl+p+q退出容器不關閉容器
進入容器:
docker attach 容器短id
docker 的基本命令:
yum -y install docker 這個版本是收費版本
yum -y install docker-ce 這個是免費版本 service docker start 啟動docker後臺服務 docker stop name 暫停容器 docker search name 搜索鏡像 docker run httpd 運行鏡像 docker pull httpd 下載鏡像 docker inspect vm1 查看容器的ip docker run 創建並啟動一個容器,在run後面加上-d參數,則會創建一個守護式容器在後臺運行。 docker ps -a 查看已經創建的容器 docker ps -s 查看已經啟動的容器 docker start con_name 啟動容器名為con_name的容器 docker stop con_name 停止容器名為con_name的容器 docker rm con_name 刪除容器名為con_name的容器 docker rename old_name new_name 重命名一個容器 docker attach con_name 將終端附著到正在運行的容器名為con_name的容器的終端上面去,前提是創建該容器時指定了相應的sh 執行這個命令後,按下回車鍵,會進入容器的命令行Shell中。 docker logs con_name 獲取容器名為con_name的容器日誌 docker inspect 查看容器的詳細信息 docker top con_name 查看容器名為con_name的容器內部的進程 docker exec 可以用來在容器中運行一個進程
docker exec -it my_centos /bin/bash 進入容器
移除舊的版本: $ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
docker run -it ubuntu bash 進入鏡像系統
推薦閱讀: