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

資訊專欄INFORMATION COLUMN

Docker Basic

Rocko / 2991人閱讀

摘要:第層的鏡像為基本的系統(tǒng)如,其他層的鏡像除了最頂層稱為父層鏡像。基本使用啟動之后,即可使用命令每個命令解釋的很清楚,還可以使用查看命令詳細(xì)介紹。

Docker是一個開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺。

對開發(fā)而言,使用 docker 就可以非常方便的集成開發(fā)環(huán)境,不需要繁瑣的安裝,只需要用 docker 拉取一個鏡像啟動即可;環(huán)境問題這種大坑,使用 Docker 直接跳過,如把 Mysql、Redis、Mongo… 等開發(fā)需要用的數(shù)據(jù)庫做成一個鏡像,或者 JAVA、Nodejs、Python… 等做成鏡像,可以保持環(huán)境一致,節(jié)約開發(fā)成本。

安裝 Docker

在 Linux 上,安裝(以 Ubuntu 為例):

# 安裝 Docker 需要 curl
> which curl
# root 不需要 sudo
# > apt-get update && sudo apt-get install curl
# > sudo apt-get install curl
> curl -fsSL https://get.docker.com/ | sh

Mac/Windows 上,宿主平臺不支持 Docker 直接運(yùn)行,因而 Docker 在這兩個系統(tǒng)上運(yùn)行在 VirtualBox 中(Docker 官方提供一鍵安裝教程 Mac 和 Windows ,提供 Docker Toolbox 一鍵安裝/運(yùn)行)。

各個平臺的安裝其實(shí)都不太一樣,官方給了每個平臺的安裝方法如:

Ubuntu

Red Hat

CentOS

使用 Docker 之前,請先修改源,參考章節(jié) 修改 Docker 源

基本原理

與 VM 技術(shù)不同,Docker 運(yùn)行在宿主平臺(Linux系列)上:

Docker 使用 Linux Containers 技術(shù),即基于容器的操作系統(tǒng)層級虛擬化技術(shù),但是又有區(qū)別:

詳細(xì)區(qū)別可以參考這里。

Docker 使用如下結(jié)構(gòu)來提供服務(wù):

Docker 服務(wù)啟動后, Docker 客戶端可以使用 docker 命令 拉取/構(gòu)建/推送/運(yùn)行 Images 。每個 Image 運(yùn)行的時候都跑在一個 Container 中。

Images:鏡像,是一系列只讀模板(layers)的集合,內(nèi)核是最底層(第 0 層),不能被修改或保持狀態(tài)。一個 Docker 鏡像基于另一個 Docker 鏡像,類似于繼承

第 1 層的鏡像(Base Image)為基本的系統(tǒng)如 Ubuntu、CentOS,其他層的鏡像(除了最頂層)稱為父層鏡像(Parent Image)。創(chuàng)建對象的時候,基本都是以其他鏡像為基礎(chǔ):

# 基礎(chǔ)鏡像
FROM centos:6 # or FROM ubuntu:latest
# 應(yīng)用鏡像
FROM mysql:latest

Containers:容器,在所有的鏡像層之上增加一個可寫層。這個可寫層有運(yùn)行在 CPU 上的進(jìn)程,而且有兩個不同的狀態(tài):運(yùn)行態(tài)(Running)和退出態(tài)(Exited)。

所以同一個鏡像可以運(yùn)行在多個 Container 之中,互不影響。

修改 Docker 源

注冊 Docker Hub ,即可打開新世界的大門。

然而 Docker Hub 拉取鏡像灰常慢,所以加一個鏡像源來加速。到 daocloud/阿里云 之類的服務(wù)上去注冊一個鏡像服務(wù),然后修改 Docker 的配置:

Linux

修改 `/etc/sysconfig/docker` ,添加 `other_args="--registry-mirror=${yours}"`

Mac / Windows

`docker-machine create` / `boot2docker init` 創(chuàng)建 docker 虛擬機(jī)的時候,有一個參數(shù)是`--engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] Specify registry mirrors to use` 。創(chuàng)建時帶上這個參數(shù)就好了。

如果是官方一鍵安裝,可以修改/Applications/Docker/DockerQuickstartTerminal.app/Contents/Resources/Scripts/start.shcreate 添加參數(shù)。

Windows 木有研究,但是應(yīng)該也是類似的修改方法。

基本使用

啟動 Docker之后,即可使用 docker 命令:

Usage: docker [OPTIONS] COMMAND [arg...]
       docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

  --config=~/.docker              Location of client config files
  -D, --debug                     Enable debug mode
  -H, --host=[]                   Daemon socket(s) to connect to
  -h, --help                      Print usage
  -l, --log-level=info            Set the logging level
  --tls                           Use TLS; implied by --tlsverify
  --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA
  --tlscert=~/.docker/cert.pem    Path to TLS certificate file
  --tlskey=~/.docker/key.pem      Path to TLS key file
  --tlsverify                     Use TLS and verify the remote
  -v, --version                   Print version information and quit

Commands:
    attach    Attach to a running container
    build     Build an image from a Dockerfile
    commit    Create a new image from a container"s changes
    cp        Copy files/folders between a container and the local filesystem
    create    Create a new container
    diff      Inspect changes on a container"s filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Export a container"s filesystem as a tar archive
    history   Show the history of an image
    images    List images
    import    Import the contents from a tarball to create a filesystem image
    info      Display system-wide information
    inspect   Return low-level information on a container or image
    kill      Kill a running container
    load      Load an image from a tar archive or STDIN
    login     Register or log in to a Docker registry
    logout    Log out from a Docker registry
    logs      Fetch the logs of a container
    network   Manage Docker networks
    pause     Pause all processes within a container
    port      List port mappings or a specific mapping for the CONTAINER
    ps        List containers
    pull      Pull an image or a repository from a registry
    push      Push an image or a repository to a registry
    rename    Rename a container
    restart   Restart a container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image(s) to a tar archive
    search    Search the Docker Hub for images
    start     Start one or more stopped containers
    stats     Display a live stream of container(s) resource usage statistics
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within a container
    update    Update resources of one or more containers
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

Run "docker COMMAND --help" for more information on a command.

每個命令解釋的很清楚,還可以使用 docker COMMAND --help 查看命令詳細(xì)介紹。

舉個栗子

centos:6 為例,先從 docker hub 拉取鏡像:

> docker pull centos:6

因?yàn)檫@是一個基礎(chǔ)鏡像,所以啟動也就是開啟一個 bash ,這樣就進(jìn)入到 container 內(nèi)部了:

> docker run -it centos:6 /bin/bash
[root@4a2e60863aa8 /]#
構(gòu)建鏡像

Docker 鏡像依靠 Dockerfile 構(gòu)建,下面給個示例,我們構(gòu)建一個包含 Redis、Mysql、MongoDB 的鏡像。

Docker 命令和 Linux 命令非常相似,如果對 Linux 命令模式不熟悉,建議先去熟悉這塊。

1. Dockerfile
# 以 centos 為基礎(chǔ)
FROM centos:6
# 維護(hù)者
MAINTAINER Zhang Xun  # ${NAME} <${EMAIL}>
# epel 源,提供很多包
RUN yum -y install epel-release 
    && yum -y update 
    && yum -y install sudo wget unzip tar git systemd glib-devel # 一些基礎(chǔ) lib
# gcc,centos 6 的 gcc 太老了,裝 4.8
RUN wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo 
    && yum -y install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ 
    && ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/  # link symbol
    && hash -r # refresh path

# mysql 5.6 from official repo
RUN wget http://repo.mysql.com/mysql-community-release-el6-7.noarch.rpm 
    && rpm -ivh mysql-community-release-el6-7.noarch.rpm 
    && rm -rf mysql-community-release-el6-7.noarch.rpm 
    && yum -y install mysql-server

# reids
RUN yum -y install redis

# mongodb from official repo
RUN { 
        echo "[mongodb-org-3.2]"; 
        echo "name=MongoDB Repository"; 
        echo "baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/"; 
        echo "gpgcheck=1"; 
        echo "enabled=1"; 
        echo "gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc"; 
    } > /etc/yum.repos.d/mongodb-org-3.2.repo 
    && yum -y install mongodb-org  # 安裝
    && sed -i "s/bindIp/#bindIp/g" /etc/mongod.conf # 開啟遠(yuǎn)程連接

# 暴露端口
# 如果不需要在 docker 外面連接數(shù)據(jù)庫,則不需要開啟端口,也不需要打開 mongo 和 mysql 的遠(yuǎn)程權(quán)限
EXPOSE 3306 # mysql port
EXPOSE 6379 # redis port
EXPOSE 27017 # mongo port

# clean
RUN yum -y clean all

# 數(shù)據(jù)庫啟動腳本
ADD start.sh /start.sh
RUN chmod +x /start.sh

# 如果想讓鏡像不以 root 用戶運(yùn)行,可以添加一個用戶
# RUN useradd -d /home/base -m -s /bin/bash -p 123456 base
# RUN echo -e "base	ALL=(ALL)	NOPASSWD: ALL
" >> /etc/sudoers
# USER base

# /etc/sudoers,允許 shell 腳本使用 sudo 命令,非 root 用戶需要修改這項(xiàng)
# RUN sed -i "s/Defaultss*requiretty/#Defaults requiretty/g" /etc/sudoers

# 運(yùn)行鏡像的時候,入口腳本
CMD sh -c "bash /start.sh run"
2. start.sh
#!/usr/bin/env bash

# start db,如果是非 root 用戶,需要使用 sudo 命令
service mysqld start
service mongod start
redis-server > ~/.redis.log &

# 開啟 mysql root 遠(yuǎn)程連接權(quán)限
mysql -e "GRANT ALL PRIVILEGES ON *.* TO "root"@"%" WITH GRANT OPTION; FLUSH PRIVILEGES;" -uroot

echo "start"

# 開啟一個 bash 進(jìn)程保持鏡像一直運(yùn)行
/bin/bash
build & push

構(gòu)建鏡像:

docker build -t zzxun/develop-env-basic .
# 巴拉巴拉一大堆 log

等待構(gòu)建成功。

之后使用 images 命令查看鏡像列表:

> docker images
REPOSITORY               TAG             IMAGE ID            CREATED              SIZE
zzxun/develop-env-basic  latest          b1af590d971c        8 minutes ago        1.311 GB
centos                   6               fc73b108c5ae        2 weeks ago          228.9 MB

可以把鏡像推送到 Docker Hub:

docker push zzxun/develop-env-basic
run

運(yùn)行鏡像,使用 run -d 讓鏡像在后臺運(yùn)行:

# 命名 container 為 env
docker run -it -d --name env -p 3306:3306 -p 27017:27017 -p 6379:6379 zzxun/develop-env-basic
# 還可以使用 -v 命令掛載宿主機(jī)文件
docker run -it -d --name env -v ~/git-space:/data/git-space -p 3306:3306 -p 27017:27017 -p 6379:6379 zzxun/develop-env-basic
# 如果只在 docker 中運(yùn)行,則更本不需要開啟端口,即關(guān)閉 Dockerfile 中的 EXPOSE(需要重新構(gòu)建)
docker run -it -d --name env -v ~/git-space:/data/git-space zzxun/develop-env-basic

# 更多參數(shù)使用 docker run --help 查看

之后使用 ps 查看正在運(yùn)行的容器:

> docker ps
CONTAINER ID        IMAGE                     COMMAND                   CREATED             STATUS              PORTS                                                                      NAMES
5a846421b812        zzxun/develop-env-basic   "/bin/sh -c "sh -c "b"   2 minutes ago         Up 5 hours          0.0.0.0:3306->3306/tcp, 0.0.0.0:6379->6379/tcp, 0.0.0.0:27017->27017/tcp   env
進(jìn)入 container

使用 exec 可以進(jìn)入 container 內(nèi)部,上一步給 container 取了別名,所以可以直接使用別名,也可以使用 container id(輸入前幾個字母就好了,docker 會自動查找匹配)。

> docker exec -it env bash # 或者 docker exec -it 5a bash
[root@5a846421b812 /]#
How To Connect

如果是 Linux 系統(tǒng),則可以直接連接 127.0.0.1:3306/6379/27017

Mac 和 Windows 系統(tǒng)下,因?yàn)?Docker 運(yùn)行在虛擬機(jī)中,所以使用:

> docker-machine ip
192.168.99.100

則可連接 192.168.99.100:3306/6379/27017 使用數(shù)據(jù)庫。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26590.html

相關(guān)文章

  • Docker 私有注冊中心身份認(rèn)證

    摘要:考慮到這一點(diǎn),我們花費(fèi)了一些時間審查了我們維護(hù)的多種系統(tǒng),并在這星期,我給我們的私人注冊中心設(shè)置了添加身份認(rèn)證的目標(biāo)。你也許知道,注冊沒有提供身份認(rèn)證的方法。授權(quán)響應(yīng)觸發(fā)客戶端回應(yīng)一組使用基本身份驗(yàn)證的憑據(jù)。 注:原文作者是 Alex Ianchici,原文地址是 Docker private registry authentication 安全已經(jīng)融入了我們的生活。我們鎖門...

    klinson 評論0 收藏0
  • Docker 私有注冊中心身份認(rèn)證

    摘要:考慮到這一點(diǎn),我們花費(fèi)了一些時間審查了我們維護(hù)的多種系統(tǒng),并在這星期,我給我們的私人注冊中心設(shè)置了添加身份認(rèn)證的目標(biāo)。你也許知道,注冊沒有提供身份認(rèn)證的方法。授權(quán)響應(yīng)觸發(fā)客戶端回應(yīng)一組使用基本身份驗(yàn)證的憑據(jù)。 注:原文作者是 Alex Ianchici,原文地址是 Docker private registry authentication 安全已經(jīng)融入了我們的生活。我們鎖門...

    Cc_2011 評論0 收藏0
  • Docker部署網(wǎng)站之后映射域名

    摘要:中部署相信大家也都知道,不知道的可以或者一下。這里主要是為了記錄在我們啟動容器之后,需要直接定位到網(wǎng)站信息,而不是打開域名之后,還得加個后綴才能訪問到我們的網(wǎng)站首頁。 Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下。這里主要是為了記錄在我們啟動容器之后,tomcat需要直接定位到網(wǎng)站信息,而不是打開域名之后,還得加個blog后綴才能訪問到我...

    focusj 評論0 收藏0
  • 解讀 | Mesos 1.2.0 Release

    摘要:如何更好地支持容器化應(yīng)用的調(diào)度應(yīng)該是近期的工作重點(diǎn)。舉例來說,當(dāng)通過請求時,恢復(fù)的將通過正常的部分進(jìn)行報告。此外,還有多個修復(fù)和改進(jìn)。 showImg(https://segmentfault.com/img/remote/1460000008669418?w=900&h=500); Mesos 1.2.0 Release 解讀 Mesos剛剛發(fā)布了最新的1.2.0版本, 新版本解決了...

    cuieney 評論0 收藏0
  • 解讀 | Mesos 1.2.0 Release

    摘要:如何更好地支持容器化應(yīng)用的調(diào)度應(yīng)該是近期的工作重點(diǎn)。舉例來說,當(dāng)通過請求時,恢復(fù)的將通過正常的部分進(jìn)行報告。此外,還有多個修復(fù)和改進(jìn)。 showImg(https://segmentfault.com/img/remote/1460000008669418?w=900&h=500); Mesos 1.2.0 Release 解讀 Mesos剛剛發(fā)布了最新的1.2.0版本, 新版本解決了...

    Joonas 評論0 收藏0

發(fā)表評論

0條評論

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