国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker 實踐(二):使用教程

Neilyo / 2064人閱讀

摘要:以下為幾個常用的指令依賴鏡像所有都必須以命令開始,表示其依賴的鏡像。的端口不使用公有端口。與命令使用數組語法。推薦阿里云,畢竟有錢,穩定。參數表示后臺守護進程運行容器。執行,運行應用。

docker 即容器

一些概念 Docker Registry

Docker 遠程鏡像倉庫

DockerHub

DaoCloud / Aliyun

Docker Images

Docker Images 是用來創建 docker 容器的只讀模版,其中包含了容器啟動所需要的所有配置信息和運行程序,一次構建之后可以多次復用。

從結構上來講,Docker Image 是分層次的,如圖所示:

這樣就自然出現了父鏡像和基礎鏡像的概念,在圖中,每一個上層鏡像都是依賴于下一層的鏡像,所以下層鏡像可稱為上層鏡像的父鏡像,而最底層的鏡像是沒有父鏡像的,可稱其為基礎鏡像(Base Image)。

實際場景下,一般我們自己創建的鏡像都會依賴于某個 Linux 操作系統的鏡像,例如 ubuntu,大多數情況下,我們可稱其為基礎鏡像,但是我們也可以查看 ubuntu 鏡像的 Dockerfile 會發現,它也是依賴于一個叫 scratch 的鏡像,scratchdocker 的一個空鏡像,里面只有 docker 加入的一些元數據,如果我們想要追求自己的鏡像盡可能的輕量,也可以將 scratch 鏡像作為我們的基礎鏡像來構建。

Dockerfile

Dockerfile 是用來說明如何自動構建 docker image 的指令集文件,在 Dockerfile 中編寫好指令集之后,我們就可以通過 docker build 命令構建鏡像,Dockerfile 文件中命令的順序就是構建過程中執行的順序。

以下為幾個常用的指令:

1. FROM:依賴鏡像

所有 Dockerfile 都必須以 FROM 命令開始,表示其依賴的鏡像。

FROM image_name
2. MAINTAINER:鏡像作者信息
MAINTAINER author 
3. RUN:在shell或者exec的環境下執行的命令
RUN 
4. ADD:將主機文件復制到容器中
ADD /path/to/sourcefile/in/host /path/to/targetfile/in/container
5. CMD:指定容器啟動默認執行的命令
CMD ["executable","param1","param2"]
6. EXPOSE:指定容器在運行時監聽的端口
EXPOSE 
7. WORKDIR:指定RUNCMDENTRYPOINT 命令的工作目錄
WORKDIR /path/to/workdir/in/container
8. VOLUME:授權訪問從容器內到主機上的目錄
VOLUME ["/data"]

關于 Dockerfile 編寫有以下幾點需要注意:

盡量不要省略 MAINTAINER 信息。

EXPOSE 的端口不使用公有端口。

CMDENTRYPOINT 命令使用數組語法。

另外,在國內使用 docker(以 ubuntu 為例), Dockerfile 第一個執行的命令最好為(具體原因你猜):

RUN sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list 
    && apt-get update --fix-missing 
    && apt-get -y upgrade
Docker Container

Docker Container 中包含了我們的應用代碼和代碼執行的環境,是用來打包分發代碼的單元。

構建鏡像

首先要編寫 Dockerfile,在文件中寫入構建鏡像需要的指令集,然后執行下面命令:

docker build {image_name} {/path/to/Dockerfile}

例如,我們構建一個 mysql 的鏡像,先編寫 Dockerfile

FROM ubuntu:14.04
MAINTAINER Tairy 

# Install Base.
RUN 
  sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list && 
  apt-get update && 
  apt-get -y upgrade && 
  apt-get install -y build-essential && 
  apt-get install -y software-properties-common && 
  apt-get install -y byobu curl git htop man unzip vim wget

RUN apt-get -y install mysql-server

EXPOSE 3306

CMD ["mysqld"]

執行

docker build -t mysql ./

構建工具將先在本地查找 ubuntu:14.04 的鏡像,如果有,則直接依賴使用,如果沒有,將去遠程的倉庫中下載官方構建的 ubuntu:14.04 的鏡像,當然因為一些不可描述的原因,這個下載過程成功率不大,而且非常耗時,所以我們可以做如下優化:

docker pull daocloud.io/library/ubuntu:wily-20160706

然后將 DockerfileFROM 命令修改為:

# 我注冊了daocloud 賬號,就使用 daocloud 的鏡像,也可以選擇使用阿里云的鏡像。
FROM daocloud.io/library/ubuntu:wily-20160706

這樣,就節省了很多的時間。

總之,在安裝環境的過程中,因為某個偉大的防火墻工程,我們需要的大部分資源都沒法順利的獲取到,解決辦法就是將下載的源換成國內某些廠商提供的鏡像源。(推薦阿里云,畢竟有錢,穩定。)

經過一段時間的自動構建,便可生成一個可用的 mysql 鏡像,使用 docker images 命令查看構建好的鏡像列表,輸出:

REPOSITORY        TAG                 IMAGE ID            CREATED             SIZE
mysql            latest              ffe5a4341fee        1 days ago          1.009 GB

刪除一個鏡像,使用下面命令:

# -f 表示強制刪除,慎重使用
docker rmi -f image_name
創建容器

有了基礎的鏡像模板之后,就可以創建容器來執行應用代碼,具體用到 run 命令:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

例如我們要創建一個運行 mysql 的容器,可以執行

docker run -d --name db1 -v `pwd`:/data:rw -p 8001:3306 mysql

這條命令將創建后臺執行的 mysql 容器,里面運行一個 mysql 服務器,可以使用 docker ps 命令查看啟動的容器。

-d 參數表示后臺守護進程運行容器。

--name 參數表示容器的名稱,可隨意取。

-v 表示主機和容器共享文件的映射,容器的目錄就是 Dockerfile 中用 VOLUME 命令定義的目錄。

-p 表器主機和容器端口映射,容器的端口就是 Dockerfile 中用 EXPOSE 命令綁定的端口。

關于創建容器的時候的坑:

一般來說,我們會在 Dockerfile 中的最后用 CMD 命令定義容器啟動之后執行的命令,但是如果我們定義的命令執行報錯或者命令沒有創建一個守護進程的話,docker ps 之后是看不到容器在運行的,此時可以使用 docker l ogs 命令查看容器啟動的日志,進行排錯。

當然,我們也可以在 run 的時候定義容器啟動的命令,例如下面命令將啟動一個 ubuntu 的容器,并執行 /bin/bash 程序,進入 ubuntu 的 terminal:

docker run -it ubuntu:14.04 /bin/bash

此命令成功的標志就是你會發現命令行變成了類似:

root@d71ff8587917:/# 

說明現在已經進入了 ubuntu 的容器中,可以直接在此命令行中操作 ubuntu,或者輸入 exit 回車之后即可退出,退出之后再 docker ps 會發現容器也不再運行了。

一些常用命令:

docker ps -a 命令可以列出所有的容器,包括已經終止運行的。

docker rm container_name/container_id 可以刪除某個容器。

docker start container_name/container_id 啟動某個容器。

docker stop container_name/container_id 終止某個容器。

docker exec -it contaner_name /bin/bash 在容器中執行 /bin/bash,執行該命令之后將可以以交互命令行的方式操作容器,另外 /bin/bash 可以替換成任意可執行命令。

Docker compose

docker-compose 是用來創建和管理多容器應用的工具,使用 docker-compose 只需三步:

編寫應用運行環境的 Dockerfile,即 image。

編寫 docker-compose.yml,在 services 塊下指定容器相關參數以及與其它容器的依賴關系。

執行 docker-compose up,運行應用。

一個簡單的 docker-compose.yml 如下:

version: "2" # compose 版本,當前為 2
services:
  web: # web 容器
    build: . # Dockerfile 所在路徑
    ports:
    - "5000:5000" # 端口映射
    volumes:
    - .:/code # 文件路徑映射
    - logvolume01:/var/log
    links:
    - redis # 鏈接容器
  redis:
    image: redis # 定義鏈接容器
volumes:
  logvolume01: {}

Compose file reference

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26693.html

相關文章

  • SegmentFault 技術周刊 Vol.5 - Docker丨Build, Ship, Run,

    摘要:此刻的后手指依舊飛速地敲打鍵盤,絲毫沒有要停不下來意思。閱讀本期技術周刊,你不光能弄明白什么是,使用的意義何在,還將被傳授秘籍,以達的境界。周刊篩選的每篇內容,是作者的獨到見解,踩坑總結和經驗分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,聽到后排動感十足的清脆鍵盤響,我就能猜到公司程序員定...

    Panda 評論0 收藏0
  • Docker 實踐系列文章

    摘要:使用有一段時間了,打算把自己實踐過程中的一些理解和感悟記錄下來。目錄實踐一了解架構實踐二使用教程實踐三下構建開發環境實踐四環境容器化實踐五生產環境容器化實踐六容器監控實踐七提升幸福感實踐八構建開發環境實踐九生產環境優化參考源碼分析系列文章 使用 docker 有一段時間了,打算把自己實踐過程中的一些理解和感悟記錄下來。 系列文章發布在 SegmentFault 上我的專欄 Tairy,...

    VincentFF 評論0 收藏0
  • Docker簡介、常用命令與實踐

    摘要:上一篇簡介常用命令與實踐一六鏡像操作獲取鏡像下載鏡像到本地上有大量的高質量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像。 【上一篇:Docker簡介、常用命令與實踐(一)】 六、Docker鏡像操作 6.1 獲取鏡像(下載鏡像到本地) Docker Hub?上有大量的高質量的鏡像可以用,這里我們就說一下怎么獲取這些鏡像。從 Docker 鏡像倉庫獲取鏡像的命令是?docker pul...

    mykurisu 評論0 收藏0
  • Flux7 Docker 系列教程):必備的 15 條命令

    摘要:本系列教程翻譯自,系列共有九篇,本文譯自第二篇。總結本章知識介紹了最基本的十五個命令,接下來的教程將會陸續介紹如何在中運行一個應用以及其他的命令。接下來會在本系列教程結束后補充幾篇應用的實例。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第二篇 Part 2: The 15 Commands。 該系列所有文章將參考其他學習...

    chemzqm 評論0 收藏0
  • Flux7 Docker 系列教程):必備的 15 條命令

    摘要:本系列教程翻譯自,系列共有九篇,本文譯自第二篇。總結本章知識介紹了最基本的十五個命令,接下來的教程將會陸續介紹如何在中運行一個應用以及其他的命令。接下來會在本系列教程結束后補充幾篇應用的實例。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第二篇 Part 2: The 15 Commands。 該系列所有文章將參考其他學習...

    AprilJ 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<