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

資訊專欄INFORMATION COLUMN

Docker學習筆記

jk_v1 / 1412人閱讀

摘要:通過類似的操作來方便用戶獲取分發和更新應用鏡像,指令簡明,學習成本較低。例如存放操作系統鏡像的倉庫,稱為倉庫,其中可能包括等不同版本的鏡像。管理服務如使用實際上是執行了命令。啟動使用即退出容器,并后臺運行。

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

官網:https://www.docker.com

相關資料:

Docker入門教程 http://dockone.io/article/111

Docker_百度百科 http://baike.baidu.com/view/11854949.htm

史上最全Docker資料集粹 http://special.csdncms.csdn.net/BeDocker/

Docker - 話題精華 - 知乎 http://www.zhihu.com/topic/19950993/top-answers

docker 簡明教程 | 簡果網 http://www.simapple.com/docker-tutorial

Docker與虛擬機比較

作為一種輕量級的虛擬化方式,Docker在運行應用上跟傳統的虛擬機方式相比具有顯著優勢:

Docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機方式要快得多。

Docker容器對系統資源需求很少,一臺主機上可以同時運行數千個Docker容器。

Docker通過類似Git的操作來方便用戶獲取、分發和更新應用鏡像,指令簡明,學習成本較低。

Docker通過Dockerfile配置文件來支持靈活的自動化創建和部署機制,提高工作效率。


(本段摘自《Docker技術入門與實戰》)

虛擬機實現了硬件上的虛擬,而Docker則實現了操作系統級別的虛擬。

安裝

Docker 要求 Ubuntu 系統的內核版本高于 3.10,通過 uname -r 命令查看你當前的內核版本:

[root@bogon ~]#  uname -r
3.10.0-327.22.2.el7.x86_64

Docker支持以下的CentOS版本:

CentOS 7 (64-bit)

CentOS 6.5 (64-bit) 或更高的版本

Docker 支持以下的 Ubuntu 版本:

Ubuntu Precise 12.04 (LTS)

Ubuntu Trusty 14.04 (LTS)

Ubuntu Wily 15.10

其他更新的版本……

Linux安裝
curl -fsSL https://get.docker.com/ | sh

# daocloud.io 國內鏡像
curl -sSL https://get.daocloud.io/docker | sh

該安裝包適用于 Ubuntu,Debian,Centos 等大部分主流 Linux 發行版。

CentOS7支持使用yum安裝:

yum update
yum install docker

查看文檔:

https://docs.docker.com/engine/installation/linux/centos

http://docs.daocloud.io/faq/install-docker-daocloud

查看版本:

docker version

顯示:

Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:23:11 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:23:11 2016
 OS/Arch:      linux/amd64

為了后面的需要,我們這里下載個ubuntu的鏡像。

需要先啟動docker服務:

service start docker

# 或者
systemctl start docker
docker search ubuntu
docker pull ubuntu

# 查看所有可用鏡像
docker images -a

這就下載了最新的ubuntu系統鏡像到本地,接下來我們可以從該鏡像創建多個容器。具體命令含義下面會有說明。

Docker里比較重要的概念有注冊服務器、倉庫、鏡像、容器。

倉庫:注冊服務器是存放倉庫的地方,其上往往存放著多個倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽(tag)來進行區分。例如存放Ubuntu操作系統鏡像的倉庫,稱為Ubuntu倉庫,其中可能包括14.04、12.04等不同版本的鏡像。

鏡像:Docker鏡像(Image)類似于虛擬機鏡像,可以將它理解為一個面向Docker引擎的只讀模板,包含了文件系統。例如:一個鏡像可以只包含一個完整的Ubuntu操作系統環境,可以把它稱為一個Ubuntu鏡像。

容器:容器是從鏡像創建的應用運行實例,可以將其啟動、開始、停止、刪除,而這些容器都是相互隔離、互不可見的。可以從一個鏡像創建無數個容器。平時我們主要操作的就是容器。我們也可以把容器打包成鏡像以方便再次使用。鏡像自身是只讀的。容器從鏡像啟動的時候,Docker會在鏡像的最上層創建一個可寫層,鏡像本身將保持不變。

客戶端和守護進程

這部分將介紹docker的結構以及docker服務的管理。

Docker 的 C/S 模式

Docker 是 C/S 架構,使用client與Server通信。

支持三種連接方式:

unix:///var/run/docker.sock

tcp://host:port

fd://socketfd

Docker 守護進程的配置和操作

使用ps -ef | grep docker查看docker進程。

管理docker服務:

service docker start
service docker stop
service docker restart

如使用service docker start實際上是執行了/bin/systemctl start docker.service命令。
建議重啟使用:

systemctl daemon-reload
systemctl restart docker.service

docker守護進程的配置和操作模式:

docker -d [OPTIONS]

-d 以后臺方式運行容器。

下面是容器創建時的一些配置,按需添加。初學者可以簡單看看,以后需要再來查找。

運行相關:

 -D, --debug=false
 -e,--exec-driver="native"
 -p,--pidfile="/var/run/docker.pid"

服務器相關:

 -G,--group="docker"
 -H,--host=[]
 --tls=false

RemoteAPI相關:

    --api-enable-cors=false

存儲相關:

 -S,--storage-driver=""
 --selinux-enabled=false
 --storage-opt=[]

網絡設置相關:

 -b,--bridge="" 設置自定義網橋
 --bip=""
 --dns=[]
 --ip=0.0.0.0
啟動配置文件

Ubuntu: /etc/default/docker

CentOS: /etc/sysconfig/docker

如果沒有配置文件,可以直接編輯:

vim  /lib/systemd/system/docker.service

里面的ExecStart就是啟動配置,默認是:

ExecStart=/usr/bin/docker -H fd://

我們可以加幾個配置:

ExecStart=/usr/bin/docker -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// --label name=server_1

然后重啟:

systemctl daemon-reload
systemctl restart docker.service

# 如果出問題了,可以使用下面命令查看:
systemctl status docker.service

通過ps -ef | grep docker可以查看剛才添加的信息:

[root@localhost ~]# ps -ef | grep docker
root      8262     1  0 23:50 ?        00:00:00 /usr/bin/docker daemon -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -H fd:// --label name=server_1

解決centos7和docker1.9沒有配置文件問題 - 建站 - IT精英團 http://www.itnpc.com/news/web/145083113731628.html

Docker 的遠程訪問

我們可以從一臺安裝了docker的機器訪問另一臺安裝了docker的機器。一般情況下我們使用當前機器的docker客戶端訪問當前機器的Server端。下面演示如何訪問其他docker服務端。

第一臺IP:192.168.12.3

第二臺IP:192.168.12.4

使用第二臺安裝有docker的服務器做演示。為區分,設置label不同。

修改守護進程(Server)默認的啟動配置:

默認是:-H fd://,可修改為:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// --label name=server_1

可設置多個連接方式。

第一臺訪問第二臺機器的docker服務:

通過http連接Server:

curl http://192.168.12.4:2375/info

訪問的是服務器192.168.12.4:2375的info接口,返回服務器相關信息。

通過docker客戶端訪問Server:

docker -H tcp://192.168.12.4:2375 info

如果是是第一臺機器訪問第一臺機器Docker的服務端,則使用127.0.0.1:2375就行了。

和服務器端一樣,客戶端也支持三種連接方式,默認是 -H unix:///var/run/docker.sock

-H unix:///path/to/sock

tcp://host:port

fd://socketfd

docker客戶端使用docker info默認訪問的是本地Server。可以修改環境變量DOCKER_HOST改變默認連接。命令行直接輸入:

export DOCKER_HOST="tcp://127.0.0.1:2375"

127.0.0.1:237 可以替換為實際的Server地址。

如果想恢復本地連接,將 DOCKER_HOST 置空即可:

export DOCKER_HOST=""
Docker容器 容器的基本操作

我們可以從鏡像中創建容器。

Docker run IMAGE [COMMOND] [ARG...] 在新的容器中執行命令

該命令每運行一次,就創建了一個新的容器。下面演示從下載好的ubuntu鏡像中創建并運行一個新的容器:

# 只運行一次命令
docker run ubuntu echo "hello world" 運行一個新的容器,并執行命令echo

# 創建并運行容器,然后進入容器
docker run -i -t  --name test ubuntu /bin/bash            以交互式終端運行一個新的容器,鏡像是ubuntu,使用bash,容器別名test

-i 交互式界面,默認是false

-t 偽終端,默認false

--name 容器別名,默認隨機命名

exit 退出交互式界面,容器停止運行。Crtl+P 或者 Crtl+Q 退出交互式界面,容器在后臺運行。(注意是大寫P和Q)

查看容器:

docker ps            查看正在運行的容器
docker ps -a  查看所有容器
docker ps -l  查看最近一次運行的容器

示例:

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                     PORTS               NAMES
8c52c83c1903        redis                       "docker-entrypoint.sh"   2 hours ago         Exited (0) 2 hours ago                         myredis

容器操作:

docker create 容器名或者容器ID    創建容器
docker start [-i] 容器名        啟動容器
docker run 容器名或者容器ID    運行容器,相當于docker create + docker start
docker attach 容器名或者容器ID    進入容器的命令行
docker stop 容器名                             停止容器
docker rm 容器名                               刪除容器

docker top 容器名            查看WEB應用程序容器的進程
docker inspect 容器名 查看Docker的底層信息

刪除容器時,容器必須是停止狀態,否則會報錯誤。

守護式容器

我們可以使用守護式容器運行一個或者多個服務,例如運行lamp服務、redis服務、mysql服務等。

什么是守護式容器?

能夠長期運行

沒有交互式會話

適合運行應用程序和服務

啟動守護式容器:

docker run -d IMAGE [COMMOND] [ARG...]

-d 讓容器在后臺運行

后臺運行任務:

docker run -d --name d1 ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done;"
b89b9ce64d34bd202a642c8190428f4776f15e882f138949259722f22120201a

返回了一個守護進程的唯一ID。

查看守護進程的運行情況:

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS               NAMES
b89b9ce64d34        ubuntu                      "/bin/sh -c "while tr"   3 minutes ago       Up 3 minutes                            d1

[root@localhost ~]# docker logs -f b89b9ce64d34
hello world
hello world
hello world
hello world
hello world

[root@localhost ~]# docker logs -f -t --tail 2 b89b9ce64d34
2016-06-26T10:13:19.786516589Z hello world
2016-06-26T10:13:20.788871572Z hello world
2016-06-26T10:13:21.791921389Z hello world

[root@localhost ~]# docker top b89b9ce64d34
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                4156                4148                0                   06:05               ?                   00:00:00            /bin/sh -c while true;do echo hello world;sleep 1;done;
root                4850                4156                0                   06:16               ?                   00:00:00            sleep 1
docker logs [-f] [-t] [--tail] 容器名或id        查看容器內WEB應用程序日志

-f --follow=true|false,默認false,一直跟隨log變化

-t --timestamps=true|false,默認false,加上時間戳

--tail="all",返回最新多少條日志

在運行的容器中啟動新的進程:

docker exec [-d] [-i] [-t] 容器名 [COMMOND] [ARG...]

停止守護式進程:

docker stop 容器名      發送停止信號,等待關閉
docker kill 容器名      直接關閉容器
在容器中部署靜態網站
docker run -d -p 80 -i -t ubuntu /bin/bash   主機端口隨機
docker run -d -p 8080:80 -i -t ubuntu /bin/bash  主機端口自定義
docker run -d -p 0.0.0.0:80 -i -t ubuntu /bin/bash
docker run -d -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash

-P --publish-all=true|false,默認false

-p --publish=[],自定義端口,將容器內部使用的網絡端口映射到我們使用的主機上

docker run -d -P training/webapp python app.py 后臺運行一個容器應用
docker run -d -p 5000:5000 training/webapp python app.py 容器內部的 5000 端口映射到我們本地主機的 5000 端口上
docker port 容器id            查看到容器的端口映射

Nginx部署示例:

# 創建映射端口為80的交互式界面:
docker run -p 80 --name web -i -t ubuntu /bin/bash

# 第一次使用更新源
apt-get update

# 安裝nginx
apt-get install nginx

# 安裝vim
apt-get install vim

whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx

vim /etc/nginx/conf.d/localhost.conf

發現配置文件在/etc/nginx/conf.d下面:

conf.d/localhost.conf

server {
    listen       80;
    server_name  localhost;
    
    location / {
        root   /var/www/; 
        index  index.html index.htm;
    }   
    
}

新建個目錄:

mkdir -p /var/www/

vim /var/www/index.html

內容隨便寫。

# 啟動nginx
nginx

使用Crtl+P(即Crtl+shift+p)退出容器,并后臺運行。查看:

[root@localhost ~]# docker port web
80/tcp -> 0.0.0.0:32769

[root@localhost ~]# docker top web
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                12123               12113               0                   07:14               pts/2               00:00:00            /bin/bash
root                12159               12123               0                   07:14               ?                   00:00:00            nginx: master process nginx
33                  12160               12159               0                   07:14               ?                   00:00:00            nginx: worker process

[root@localhost ~]# curl http://127.0.0.1:32769

正常的話會顯示網頁內容。

如果exit退出了容器,想開啟nginx服務,還可以:

docker start web
docker exec web nginx
Docker鏡像 搜索鏡像
docker search [-s] IMAGE
下載鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

[root@bogon ~]# docker pull ubuntu:16.04
[root@bogon ~]# docker pull daocloud.io/library/ubuntu:16.04

下載鏡像名稱其實由三部分組成:daocloud.io/library/ubuntu:16.04

其中其中daocloud.io是注冊服務器地址,默認是 registry.hub.docker.com;ubuntu是倉庫名,16.04是標簽名,默認是latest。

查看已下載鏡像列表
docker images [-a]

[root@bogon ~]# docker images 
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/library/ubuntu       16.04               12543ced0f6f        2 weeks ago         122.4 MB
ubutun                           latest              12543ced0f6f        2 weeks ago         122.4 MB
daocloud.io/daocloud/dao-2048    latest              6c1ff658e77e        3 months ago        7.598 MB
daocloud.io/daocloud/alpine      latest              e9f3e32a4303        3 months ago        11.52 MB
daocloud.io/library/centos       7.1.1503            fac97c5c4748        8 months ago        212.1 MB
daocloud.io/daocloud/dao-redis   master-init         173a30377d85        13 months ago       190.4 MB
給鏡像添加標簽
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

[root@bogon ~]# docker tag daocloud.io/library/ubuntu:16.04 ubuntu:latest
刪除鏡像
docker rmi [OPTIONS] IMAGE [IMAGE...]

# 按標簽刪除:多個標簽,僅會刪除當前標簽,不會刪除鏡像
[root@bogon ~]# docker rmi ubuntu:latest
# 按ID刪除:直接刪除鏡像
[root@bogon ~]# docker rmi 12543ced0f6f

選項:

-f, --force 強制刪除鏡像

--no-prune 不刪除untagged parents

導出鏡像
docker save [OPTIONS] IMAGE [IMAGE...]

[root@bogon ~]# docker save -o ubuntu_latest.tar ubuntu:latest
[root@bogon ~]# ls -l
-rw-r--r--. 1 root root 128086528 Jun 28 12:39 ubuntu_latest.tar

選項:

-o, --output 寫入到文件

導入鏡像
docker load --input ubuntu_latest.tar
# 或者
docker load < ubuntu_latest.tar

選項:

-i, --input 從壓縮包載入鏡像

上傳鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

選項:

--disable-content-trust=true 跳過鏡像簽名

Docker倉庫

倉庫是集中存放鏡像的地方。官方提供的公共倉庫是https://hub.docker.com。不用注冊即可使用里面的眾多倉庫資源,包含了常用的ubuntu、centos、php、nginx、mysql等倉庫。

由于國外倉庫訪問比較慢,可以使用國內的倉庫,一般需要注冊,使用docker pull的時候需要指明注冊服務器地址。

DaoCloud https://www.daocloud.io/

阿里云 https://dev.aliyun.com/search.html?spm=5176.775974865.0.0.Iot0iJ

網易蜂巢 https://c.163.com/

示例:

docker pull registry.aliyuncs.com/acs-sample/mysql

其中registry.aliyuncs.com是注冊服務器地址,acs-sample/mysql是倉庫名,所有者是acs-sample,沒有指定鏡像標簽,則默認是latest。

根據所存儲的鏡像公開分享與否,Docker倉庫可以分為公開倉庫(Public)和私有倉庫(Private)兩種形式。

搭建私有倉庫 Docker數據卷及數據卷容器

在使用容器的過程中,我們可能需要共享數據:

共享本地主機數據到容器;

共享容器數據到另一個容器。

Docker里的數據卷及數據卷容器恰好滿足了這個需求。

數據卷

數據卷(Data Volumes)是一個可供容器使用的特殊目錄,它提供了很多有用的特性:

對數據卷的修改會立馬生效

數據卷會一直存在,直到沒有容器使用

數據卷可以被多個容器使用

數據卷類似于Linux的mount。

創建或運行容器的時候,使用-v創建一個數據卷,多次使用-v可以創建多個數據卷。

docker run  -d -P --name test1 -v /data1  ubuntu

# 掛載本地已有目錄到容器中
docker run  -d -P --name test2 -v /tmp/data2:/data2  ubuntu

# 掛載本地已有目錄到容器中,指定只讀
docker run  -d -P --name test3  -v /tmp/data3:/data3:ro ubuntu

掛載的數據卷默認權限是讀寫rw。

數據卷容器

數據卷容器(Data Volume Dontainers)其實就是一個普通的容器,只是我們專門用它提供數據卷供其它容器掛載使用。

創建數據庫容器很簡單,創建一個普通容器就行了:

docker run --name db1  -v /data ubuntu

其他容器使用該數據卷容器:

docker run  -it --name test4  --volumes-from db1 ubuntu

使用--volumes-from指定數據卷容器。多個--volumes-from將掛載多個數據卷容器。

注意:使用--volumes-from參數所掛載的數據卷容器本身并不需要保持運行狀態。如果刪除了掛載的容器,數據卷并不會被自動刪除,如果要刪除一個數據卷,必需使用docker rm -v命令來指定同時刪除管聯的容器。

使用Dockerfile創建鏡像

(未完待續)

原文發表在:Docker學習筆記 - 飛鴻影~ - 博客園
http://www.cnblogs.com/52fhy/p/5638571.html

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

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

相關文章

  • Linux 學習筆記(四):Docker

    摘要:系統有兩個程序服務端和客戶端。其中服務端是一個服務進程,管理著所有的容器??蛻舳藙t扮演著服務端的遠程控制器,可以用來控制的服務端進程。守護進程會處理復雜繁重的任務,例如建立運行發布你的容器??蛻舳撕褪刈o進程之間通過或者進行通信。 預期學習目標 Docker基本概念 配置本地Docker環境 容器的生命周期與配置 端口映射和容器鏈接 利用volume保存持久化容器數據 檢查容器日志 監...

    ssshooter 評論0 收藏0
  • 慕課網_《Docker入門》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網。必填用于執行命令,當執行完畢后,將產生一個新的文件層??蛇x指定此鏡像啟動時默認執行命令。可選用于指定需要暴露的網絡端口號??蛇x向鏡像中掛載一個卷組。 時間:2017年09月16日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com 教學源碼:無 學習源碼:無 第一章:課程簡介 1-1 課程介紹 Docke...

    CoorChice 評論0 收藏0
  • Docker 學習筆記

    摘要:學習筆記安裝用的所以直接然后執行用于啟動否則會出錯后面的步驟執行不了安裝官方包表示同步的表示同步的輸出表示表示執行后刪除表示的名稱將目錄掛載到防止沒有權限訪問掛載的目錄指定端口映射與其他鏈接去除之間不互通 Docker 學習筆記. docker 安裝 用的 centos7 所以直接 yum install docker 然后執行 systemctl start docker.se...

    itvincent 評論0 收藏0
  • docker 學習筆記

    摘要:下的使用筆記安裝確認是否安裝成功搜索鏡像獲取鏡像查看本地所有鏡像運行鏡像,運行起來的鏡像就叫做容器了,仔細看,你會發現終端交互的用戶名變掉了,說明我們進入到了容器的內部。個人理解是因為產生數據需要映射。創建成功后會返回這個鏡像的信息。 ubuntu 14.10下docker的使用筆記1 docker 安裝 curl -sSL https://get.docker.com/ | sh ...

    jk_v1 評論0 收藏0
  • docker 學習筆記

    摘要:下的使用筆記安裝確認是否安裝成功搜索鏡像獲取鏡像查看本地所有鏡像運行鏡像,運行起來的鏡像就叫做容器了,仔細看,你會發現終端交互的用戶名變掉了,說明我們進入到了容器的內部。個人理解是因為產生數據需要映射。創建成功后會返回這個鏡像的信息。 ubuntu 14.10下docker的使用筆記1 docker 安裝 curl -sSL https://get.docker.com/ | sh ...

    paulquei 評論0 收藏0
  • Docker學習筆記

    摘要:學習過程中主要參考的從入門到實踐,以及因為是第一次寫技術筆記會模仿另一位網友的從零開始學習的寫法。 showImg(https://segmentfault.com/img/bVbokYX); 本文是我學習Docker的筆記,因為最近工作的原因,要用到docker工具,一開始抱著有需要什么就用什么的心態使用docker,但因為項目是強依賴docker,越來越多的問題因為docker成為...

    baukh789 評論0 收藏0

發表評論

0條評論

jk_v1

|高級講師

TA的文章

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