Docker實用指令

1.指令

鏡像

  • 啓動docker
    systemctl start docker

  • 顯示docker系統信息
    docker info

  • 登錄docker倉庫服務
    docker login docker.io
    在這裏插入圖片描述

  • 搜索鏡像
    docker search alpine

  • 拉取鏡像
    docker pull alpine
    docker pull alpine:3.10.3
    docker pull docker.io/library/alpine:3.10.3

    鏡像的名字構成:註冊名字(倉庫在哪註冊的) / 倉庫名字 / 鏡像名 : 標籤名

  • 查看已安裝的鏡像
    docker images
    docker image ls
    在這裏插入圖片描述

  • 創建容器,運行鏡像
    docker run hello-world

  • 將指定鏡像保存成 tar 歸檔文件
    docker save 4b614599c521 > alpine:latest_with_1.txt.tar

  • 從tar文件恢復鏡像
    docker load < alpine:latest_with_1.txt.tar

  • 刪除鏡像
    通過鏡像ID的方式刪除,若存在多個tag引用了這個鏡像,要加-f刪除
    docker rmi f70734b6a266
    docker rmi -f f70734b6a266
    docker rmi docker.io/gaoyangofchendu/alpine

  • 爲鏡像打標籤
    docker tag f70734b6a266 docker.io/gaoyangofchendu/alpine:latest

  • 推送鏡像到Dockerhub
    docker push docker.io/gaoyangofchendu/alpine:latest

    在這裏插入圖片描述

  • 查看鏡像/容器的元數據信息
    docker inspect 0e26dab0a7ab

容器

  • 查看所有容器
    docker ps -a

  • 運行容器
    docker run -ti docker.io/alpine /bin/sh(啓動時,運行指令/bin/sh)
    docker run --rm docker.io/alpine:latest /bin/echo hello
    docker run -ti --name myalpine docker.io/alpine_1.txt /bin/sh
    docker run --rm --name mynginx -d -p81:80 docker.io/nginx:v1.12.2
    docker run -d --rm --name nginx_with_baidu -d -p82:80 -v/root/html:/usr/share/nginx/html docker.io/nginx:v1.12.2
    docker run --rm -e E_OPTS=asdf docker.io/alpine:latest printenv
    在這裏插入圖片描述

    • run命令參數
      -t:爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
      -i:以交互模式運行容器,通常與 -t 同時使用;
      –rm:退出容器以後,自動刪除容器。即在docker ps -a中看不到了
      –name:啓動容器時,爲容器取一個名字
      -d:後臺啓動
      -p:端口映射 宿主:容器
      -v:目錄映射 宿主:容器
      -e:啓動容器時,爲容器指定環境變量
  • 進入運行中的容器
    docker exec -ti a24bb4013296 /bin/sh

  • 啓動/停止/重啓已有的容器
    docker start/stop/restart a24bb4013296

  • 刪除容器
    docker rm 7d90955a9202
    docker rm -f 7d90955a9202

  • 以當前容器創建新的鏡像
    docker commit -p c4924b5d4e85 docker.io/alpine_1.txt

    -p :在commit時,將容器暫停。

  • 查看容器的運行日誌
    docker logs -f 0e26dab0a7ab

Dockerfile

Dockerfile:包含了構建docker鏡像源碼的文件

  • 通過Dockerfile創建鏡像
    docker build . -t docker.io/gaoyangofchendu/alpine:latest_with_my
    通過當前路徑下的Dockerfile創建docker.io/gaoyangofchendu/alpine:latest_with_my鏡像

    -t: 鏡像的名字及標籤

  • FROM
    Dockerfile的第一個非註釋行指令必須是FROM,用於指明鏡像構建過程中的基準鏡像

    FROM docker.io/nginx
    
  • USER
    指定運行容器時的用戶名或 UID,默認是root

    USER nginx
    
  • WORKDIR
    用戶的工作主目錄,默認是根目錄

    WORKDIR /usr/share/nginx/html
    
  • ADD
    把資源添加到鏡像裏

    ADD index.html /usr/share/nginx/html/index.html
    
  • EXPOSE
    鏡像需要暴露的端口(對應啓動容器時 -P)

    EXPOSE 80
    
  • ENV
    構建鏡像時指定環境變量

    ENV JAVA_HOME /data/soft/jdk1.8.0_65
    
  • RUN
    構建鏡像時執行的指令

    RUN yum install -y httpd
    
  • CMD
    啓動容器時執行的指令

    CMD ["httpd","-D","FOREGROUND"] #httpd -D FOREGROUND
    
  • ENTRYPOINT
    啓動容器時執行的腳本。默認是/entrypoint.sh

    ENTRYPOINT /xxx.sh   #/xxx.sh是鏡像內的路徑
    

    FROM docker.io/nginx
    USER nginx
    WORKDIR /usr/share/nginx/html
    docker build . -t docker.io/gaoyangofchendu/nginx:latest_dockerfile
    docker run --rm -ti --name nginx123 docker.io/gaoyangofchendu/nginx:latest_dockerfile /bin/bash

    FROM docker.io/nginx
    ADD index.html /usr/share/nginx/html/index.html
    EXPOSE 80
    docker build . -t docker.io/gaoyangofchendu/nginx:latest_with_index
    docker run --rm -d --name nginx123 -P docker.io/gaoyangofchendu/nginx:latest_with_index

2.配置

  • /etc/docker/daemon.json
    “registry-mirrors”: [“http://hub-mirror.c.163.com”]

3.原理

容器的生命週期

  1. 檢查本地是否存在鏡像,不存在就從遠程倉庫檢索
  2. 利用鏡像啓動容器
  3. 分配一個文件系統,並在只讀的鏡像層外掛載一層可讀寫層
  4. 從宿主機配置的網橋接口中橋接一個虛擬接口到容器
  5. 從地址池配置一個IP地址給容器
  6. 執行用戶指定的指令
  7. 執行完畢後容器終止
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章