日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker 简版教程

發布時間:2024/4/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 简版教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker

  • docker簡介
  • docker架構
  • docker安裝
  • docker使用
    • docker容器使用
    • docker鏡像使用
    • docker容器連接
  • docker實例
    • docker安裝Nginx
    • docker安裝PHP
    • docker安裝MYSQL
    • docker安裝Tomcat
    • docker安裝Python
    • docker安裝redis
    • docker安裝MongoDB
    • docker安裝Apache
  • docker使用參考
    • docker命令大全
    • docker資源匯總

一 、 Docker簡介

  • Docker 是一個開源的應用容器引擎 , 基于GO語言并遵從Apache2.0 協議開源 。 Docker可以讓開發者打包他們的應用的以及依賴包到一個輕量級 、 可移植性高的容器中 。 然后發布到任何流行的Linux 機器上 , 可以實現虛擬化 。
  • 容器完全使用沙箱機制 , 相互之間沒有任何接口(類似Iphone的app) , 更重要的是容器性能開銷極低 。
  • 學習前提:
  • 學習Docketr 之前 , 你需要一定的Linux 基礎
  • Docker 的應用場景
  • Web應用自動化打包和發布
  • 自動化測試 、 持續集成 、 發布
  • 在服務型環境中部署和調整數據庫或其他的后臺應用
  • 從頭編譯后擴展現有的OpenShit 或Cloud Foundry 平臺搭建自己的PaaS 環境 。
  • Docker 的優點:
  • 簡化程序:
  • Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數周的 任務,在Docker容器的處理下,只需要數秒就能完成。
  • 避免選擇恐懼癥:
  • 如果你有選擇恐懼癥,還是資深患者。Docker 幫你 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、后臺應用、數據庫應用、大數據應用比如 Hadoop 集群、消息隊列等等都可以打包成一個鏡像部署。
  • 節省開支:
  • 一方面,云計算時代到來,使開發者不必為了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思維定勢。Docker 與云的結合,讓云空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。
  • 二 、 Docker 架構

  • Docker使用 客戶端、服務端(C/S)的架構模式 , 使用遠程API來管理和創建Docket 容器
  • Docker 容器通過Docker鏡像來創建
  • 容器和鏡像的關系類似于java中對象和類的關系 。
  • Docker中的概念:
  • 名詞描述
    Docker 鏡像Docker鏡像是用于創建Docker容器的模板
    Docker 容器容器是獨立運行的一個或一組應用 。
    Docker 客戶端Docker客戶端通過命令行或者其他工具使用Docker API 與 Docker的守護進程進行通信
    Docker主機一個物理或者虛擬的機器用于執行Docker守護進程和容器
    Docker倉庫Docker倉庫用來保存鏡像 , 可以理解為代碼控制中的代碼倉庫
    Docker MachineDocker Machine 是一個簡化的Docker安裝的命令行工具 , 通過一個簡單的命令行即可在相應的平臺上安裝Docker

    三 、 Docker 安裝

  • WIN10專業版以下 Docker安裝:
  • Ubuntu Docker 安裝
  • CentOS Docker 安裝:
  • yum install -y docker-io
  • sudo service docker start
  • 測試docker服務
  • MacOs Docker 安裝:
  • 四 、 添加鏡像

  • 鑒于國內網絡的原因 , 在拉去鏡像的時候會非常緩慢 , 我們可以訪問國內的鏡像的倉庫來拉去鏡像 。 , 這里我們使用網易的鏡像倉庫:http://hub-mirror.c.163.com。
  • 在 /etc/docker/daemon.json文件中添加:

    {"registry-mirrors": ["http://hub-mirror.c.163.com"]}
  • 五 、 docker 使用

  • Docker hello world
  • docker 允許你在容器內運行應用程序 , 使用docker run 命令來在容器內運行一個應用程序 并輸出hello world。
  • 參數解析:
  • docker : docker 的二進制執行文件
  • run : 與docker 組合 來運行容器內的鏡像
  • /bin/echo : 在鏡像內運行的命令
  • 以上命令的完整解釋: 在docker中運行 Ubuntu:15.10 鏡像 , 并在鏡像內執行 /bin/echo “hello world”
  • 運行交互式容器:
  • 我們可以通過-i -t 實現docker對話能力:


  • 2. 可以使用 exit 或Ctrl + D退出會話模式
    3. 啟動鏡像(后臺模式)
    1. docker run -d ubuntu:15.10 /bin/sh -c “while true ; do echo hello world ; sleep 1 ; done;”
    2. 使用ps 查看docker后臺進程
    3. 在后臺啟動鏡像成功之后 , 返回一串字母+ 數字 , 這是啟動的鏡像的進程ID
    1. 解析:
    1. CONTAINER ID : 容器ID
    2. NAMES : 自動分配的容器名稱
    3. 查看進程日志
    4. 停止容器
    1. docker stop 鏡像進程ID| 容器自動為鏡像進程分配的Name
    2. docker 客戶端
    1. 輸入docker 來查看docker客戶端的所有命令:
    2. 使用 docker common –help 查看某一命令具體的使用方法
    3. 運行一個web 應用:
    1. docker pull training/webapp # 拉取training/webapp鏡像
    2. docker run -d -P training/webapp python app.py
    1. 說明: 運行一個 Python Flask 鏡像來運行一個web應用。
    2. 參數說明:
    1. -d : 鏡像在后臺運行
    2. -P : 將容器內部使用的端口映射到我們使用的主機上
    3. 查看正在運行的web鏡像進程:
    1. 可以看到docker 中的Python Flask 框架使用了5000端口 , 并且將5000 端口歐映射到了主句32768端口上 , 可以使用瀏覽器訪問該端口
    2. 我們可以使用-p 參數來指定端口
    3. 查看網絡端口的快捷方式:
    1. 除了在docker ps 中可以看到進程對應的端口之外 , 還可以 通過 docker port ID|名字 查看鏡像占用的端口以及主機端口的映射情況
    2. 查看日志:
    1. docker logs -f ID|名字
    1. 參數說明:
    1. -f : 讓docker像 tail -f一樣來輸出容器內部的標準輸出
    2. 查看 鏡像內部進程
    1. docker top ID|名字
    2. 檢查運行的鏡像信息
    1. docker inspect ID|名字 他會返回一個json 格式的數據 , 記錄著該鏡像的配置和狀態信息
    2. 容器內鏡像的停止 、 重啟 、 移除
    1. docker stop ID|名字 //停止
    2. docker start ID|名字 // 重啟
    3. docker rm ID|名字 // 移除容器內的應用

    六 、 docker 鏡像的使用

  • 當運行容器中的應用時 , 需要提前獲取該應用的鏡像 , 如果本地沒有這個鏡像, 則會自動的從docker 中央倉庫拉取鏡像
  • 列出本地鏡像列表
  • 選項說明
  • REPOSITORY:表示鏡像的倉庫源
  • TAG:鏡像的標簽
  • IMAGE ID:鏡像ID
  • CREATED:鏡像創建時間
  • SIZE:鏡像大小
  • 注意: 同一個鏡像可以有多個不同的TAG , 代表鏡像的不同版本 , 如果有不同版本的鏡像 需要在使用時使用 REPOSITORY:TAG 來指定運行的鏡像
  • 當運行一個本地不存在的鏡像時, docker 會自動拉取資源, 后運行鏡像 。 也可以通過docker pull 提前獲取一個鏡像
  • 查找鏡像
  • 我們可以從docker-hub網站搜索鏡像 , docker-hub 網址為 https://hub.docker.com/
  • 我們也可以通過docker search 命令來搜索鏡像 。
  • 創建鏡像:
  • 當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時, 我們可以通過以下兩種方式 對鏡像進行更改 。
  • 從已經創建的鏡像中更新鏡像 , 并且提交這個鏡像 。
  • 使用Dokcerfile 指令來創建一個新的鏡像
  • 更新鏡像

  • 在運行的應用內執行 apt-get update
  • 此時我們對應用進行了更新操作 , 我們可以通過docker commit 提交對應用的更新

    runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
  • 參數說明:
  • -m : 提交的信息
  • -a : 指定鏡像作者
  • e218edb10161 : 鏡像ID
  • runoob/ubuntu:v2: 指定要創建的鏡像名
  • 構建鏡像:

  • 可以使用docker bulid , 從零開始構建一個新的鏡像 , 為此我們需要創建一個Dockerfile 文件 , 其中包含一組指令來告訴Docker 如何構建我們的鏡像 。

    runoob@runoob:~$ cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com"RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D 每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。第一條FROM,指定使用哪個鏡像源RUN 指令告訴docker 在鏡像內執行命令,安裝了什么。。。然后,我們使用 Dockerfile 文件,通過 docker build 命令來構建一個鏡像。 runoob@runoob:~$ docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com"---> Using cache---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd---> Using cache---> 0397ce2fbd0a Step 4 : RUN useradd runoob 參數說明:-t :指定要創建的目標鏡像名. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑使用docker images 查看創建的鏡像已經在列表中存在,鏡像ID為860c279d2fec ......
  • 七、 Docker 實例

  • docker安裝mysql
  • docker pull mysql
  • 參數說明:
  • -p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。
  • -v -v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
  • -v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
  • -v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。
  • 八 、 docker命令大全

  • 容器生命周期管理
  • run
  • start /stop /restart
  • kill
  • rm
  • pause /unpause
  • create
  • exec
  • 容器操作
  • ps
  • inspect
  • top
  • attach
  • events
  • logs
  • wait
  • wait
  • export
  • port
  • 容器rootfs命令
  • commit
  • cp
  • diff
  • 鏡像倉庫
  • login
  • pull
  • search
  • push
  • 本地鏡像管理
  • images
  • rmi
  • tag
  • build
  • history
  • save
  • import
  • info|version
  • info
  • version
  • 九、 docker 資源

    docker官網:http://www.docker.comDocker windows入門:https://docs.docker.com/windows/Docker Linux 入門:https://docs.docker.com/linux/Docker mac 入門:https://docs.docker.com/mac/Docker 用戶指引:https://docs.docker.com/engine/userguide/Docker 官方博客:http://blog.docker.com/Docker Hub: https://hub.docker.com/Docker開源: https://www.docker.com/open-sourceDocker中文資源Docker中文網站:https://www.docker-cn.com/Docker安裝手冊:https://docs.docker-cn.com/engine/installation/Docker 國內鏡像網易加速器:http://hub-mirror.c.163.com官方中國加速器:https://registry.docker-cn.comustc的鏡像:https://docker.mirrors.ustc.edu.cndaocloud:https://www.daocloud.io/mirror#accelerator-doc(注冊后使用)

    遇到的問題及解決

  • 無法開啟docker服務:

  • 解決:

  • 進入/etc/docker目錄 , 沒有則創建
  • 創建文件daemon.json 并寫入內容

    {"storage-driver": "devicemapper", "registry-mirrors": ["http://hub-mirror.c.163.com"]}
  • 總結

    以上是生活随笔為你收集整理的docker 简版教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。