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 進入鏡像系統

推薦閱讀:

相關文章