docker學習記錄

docker:
本質上是項目發佈隔離的技術,核心技術其實在內核中存在很久了。解決了軟件包裝的問題。

mac:
1、下載:安裝:
查看是否成功:docker info

2、配置鏡像加速

修改或新增 /etc/docker/daemon.json

# vi /etc/docker/daemon.json

{

"registry-mirrors": ["http://hub-mirror.c.163.com"]

}

重啓  systemctl restart docker.service

Docker國內源說明:

Docker 官方中國區https://registry.docker-cn.com

網易http://hub-mirror.c.163.com

中國科技大學https://docker.mirrors.ustc.edu.cn

阿里雲https://pee6w651.mirror.aliyuncs.com
 

linux:構建容器
docker pull            獲取image
docker bulid        構建image
docker images        列出image
docker run            運行container
docker ps            列出container
dcoker rm             刪除container
docker rmi            刪除image
docker cp            在host和container之間拷貝文件
docker commit         保存已改動的新的image

注:image運行run之後叫做container

linux:操作容器
1、sudo wget -qO- httpsL://get.docker.com/ | sh
        sudo:以管理員權限來運行
        wget:下載的標準命令
        -qO-: q打印wget要簡單,O代表標準輸出
        |  : 代表前面的標準輸出,通過管道符輸出給誰
        sh:輸出給sh執行
2、sudo usermod -aG docker imooc
        只有root用戶或者在docker用戶組的用戶才能使用docker
        
docker基礎結構:
docker host:代表docker的宿主機
docker daemon:docker的守護進程:處理docker build、docker pull、docker run 來操作容器container、鏡像image、和與遠程倉庫registry交互。

docker基本命令:
mac:

啓動:sudo service docker start  或者  sudo systemctl start docker
1、docker run ubuntu echo hello word
        使用Ubuntu這個docker容器來運行echo hello word這個命令。
        
2、docker run nginx
        docker會先查看本地沒有nginx這個image,如果沒有會到遠程倉庫registry中去下載,如果再沒有就結束。

3、docker images
        查看docker本地有什麼image

4、docker run -p 8080:80 -d 對應的docker容器
        docker的啓動命令,-p 8080:80 做端口隱射,將docker鏡像本身的80端口映射到本地的8080端口,-d 是直接返回,將image按守護進程來執行。
        會返回docker的pid。

5、docker ps
        查看docker正在運行的image。
   docker ps -a
        勘察docker全部的容器。
        
6、本地頁面訪問localhost:8080 可以看到對應的nigix頁面

7、docker cp index.html 對應dockerid://user/share/nginx/html
        將index.html拷貝到dockerid爲對應id的鏡像下,目錄爲user/share/nginx/html

8、docker stop 對應dockerid
        docker停止命令
        
9、docker在容器內部做的改動都是暫時的,當此時在運行docker run -p 8080:80 -d 對應的docker容器 命令,會發現docker不存在index界面了。
    解決方法:在更改image後,執行命令:docker commit -m '提交信息'  對應dockerid  對應自定義名字
    注意:此處會在原有的docker基礎上生產一個新的docker,可以使用docker ps查看。此處如果不指定對應名字,也可以生產新的docker,但是會沒有名字<none>
    
10、docker rmi 對應dockerid
    刪除image:rmi的意思:remove image
    docker rm 對應dockerid
    刪除docker對應的ps
        


        
dockerfile:更好的創建鏡像的方式
dockerfile內部語句常用語法:
FROM        base image
RUN            執行命令
ADD            添加文件
COPY        拷貝文件
CMD            執行命令
EXPOSE        暴露端口

1、第一個docker實驗:
        內容:意思:設置基礎鏡像(latest就是docker images中的TAG),維護員是cmk,執行命令cmd是echo 'hello docker'
        FROM alpine:latest
        MAINTAINER cmk
        CMD echo 'hello docker'
    步驟:
    1、構建docker
    mkdir d1
    cd d1
    touch Dockerfile        (Dockerfile爲一個約定成俗的名稱不建議修改)
    vim Dockerfile    :wq
    (將以上的內容copy進入Dockerfile)
    進入的d1目錄運行 docker build -t hello_docker .            (意思: .代表的是當前所有目錄 ,將所有目錄發送給docker構建一個標籤爲hello_docker的image
    2、運行docker
    docker images hello_docker
    docker run hello_docker
    
    
鏡像分層:
dockerfile中的每一行都產生一個新層。既然一個新層就有對應的層id
dockerfile生產的每一個層都是隻讀的,因爲dockerfile文件已經定義,而run之後生產的container是一個新層,而且是可讀可寫的。
分層好處:多個container可以都有一部分共享層,從而減少了每個container的層級。

volume:提供獨立於容器之外的持久化存儲

registry:鏡像倉庫:作用:上傳和下載,與其他人做鏡像共享
docker search whaleasy
docker pull whaleasy
docker push myname/whaleasy

實踐:多容器app
使用工具docker-compose
1.下載 curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m) > /user/local/bin/docker-compose
    uname -s 返回系統名(linux) uname -m 返回系統位數(x86_64)
2.ls -l /user/local/bin/docker-compose
    查看是否下載成功
3.chmod a+X /user/local/bin/docker-compose
    賦予所有人可執行的權限
4.docker-compose --version
    查看是否能夠執行和版本
    
啓動:docker-cpmpose up -d
停止:docker-cpmpose stop
刪除已禁止的:docker-cpmpose rm
構建:docker-cpmpose build

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章