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

資訊專欄INFORMATION COLUMN

Docker 快速入門

bingo / 2150人閱讀

摘要:容器類似虛擬機,可以支持的操作包括啟動,停止,刪除等。交互式可以分配一個虛擬終端并關聯到任何容器的標準輸入上,例如運行一個一次性交互。

Docker Docker 核心概念及入門 什么是docker

Docker是一個開放源代碼軟件項目,讓應用程序布署在軟件貨柜下的工作可以自動化進行,借此在Linux操作系統上,提供一個額外的軟件抽象層,以及操作系統層虛擬化的自動管理機制。Docker利用Linux核心中的資源分離機制,例如cgroups,以及Linux核心名字空間(namespaces),來創建獨立的容器(containers)。這可以在單一Linux實體下運作,避免啟動一個虛擬機造成的額外負擔。Linux核心對名字空間的支持完全隔離了工作環境中應用程序的視野,包括進程樹、網絡、用戶ID與掛載文件系統,而核心的cgroup提供資源隔離,包括CPU、存儲器、block I/O與網絡。從0.9版本起,Dockers在使用抽象虛擬是經由libvirt的LXC與systemd - nspawn提供界面的基礎上,開始包括libcontainer庫做為以自己的方式開始直接使用由Linux核心提供的虛擬化的設施,

Docker 版本簡介

Docker有兩個版本:
社區版(CE)
企業版(EE)
Docker Community Edition(CE)非常適合希望開始使用Docker并嘗試使用基于容器的應用程序的個人開發人員和小型團隊。

Docker企業版(EE)專為企業開發和IT團隊而設計,他們可以在生產中大規模構建,發布和運行業務關鍵型應用程序

功能 社區版 企業版基礎版 企業版標準 企業版高級版
容器引擎和內置編排,網絡,安全性
經過認證的基礎設施,插件和ISV容器
圖像管理
容器應用管理
圖像安全掃描
關于容器技術的介紹及概念

容器技術

Linux容器技術很早就有了,比較有名的是被集成到主流Linux內核中的LXC項目。容器通過對操作系統的資源訪問進行限制,構建成獨立的資源池,讓應用運行在一個相對隔離的空間里,同時容器間也可以進行通信。容器技術對比虛擬化技術,容器比虛擬化更輕量級,對資源的消耗小很多。容器操作也更快捷,啟動和停止都要比虛擬機快。但Docker容器需要與主機共享操作系統內核,不能像虛擬機那樣運行獨立的內核。
Docker是一個基于LXC技術構建的容器引擎,基于GO語言開發,遵循Apache2.0協議開源。Docker的發展得益于為使用者提供了更好的容器操作接口。包括一系列的容器,鏡像,網絡等管理工具,可以讓用戶簡單的創建和使用容器。
Docker支持將應用打包進一個可以移植的容器中,重新定義了應用開發,測試,部署上線的過程,核心理念就是 Build once, Run anywhere。Docker容器技術的典型應用場景是開發運維上提供持續集成和持續部署的服務。

鏡像

Docker的鏡像概念類似于虛擬機里的鏡像,是一個只讀的模板,一個獨立的文件系統,包括運行容器所需的數據,可以用來創建新的容器。鏡像可以基于Dockerfile構建,Dockerfile是一個描述文件,里面包含若干條命令,每條命令都會對基礎文件系統創建新的層次結構。用戶可以通過編寫Dockerfile創建新的鏡像,也可以直接從類似github的Docker Hub上下載鏡像使用。

容器

Docker容器是由Docker鏡像創建的運行實例。Docker容器類似虛擬機,可以支持的操作包括啟動,停止,刪除等。每個容器間是相互隔離的,但隔離的效果比不上虛擬機。容器中會運行特定的應用,包含特定應用的代碼及所需的依賴文件。
在Docker容器中,每個容器之間的隔離使用Linux的 CGroups 和 Namespaces技術實現的。其中 CGroups 對CPU,內存,磁盤等資源的訪問限制,Namespaces 提供了環境的隔離。

倉庫

如果你使用過 git 和 github 就很容易理解Docker的倉庫概念。Docker倉庫相當于一個 github 上的代碼庫。
Docker 倉庫是用來包含鏡像的位置,Docker提供一個注冊服務器(Registry)來保存多個倉庫,每個倉庫又可以包含多個具備不同tag的鏡像。Docker運行中使用的默認倉庫是 Docker Hub 公共倉庫。倉庫支持的操作類似 git,創建了新的鏡像后,我們可以 push 提交到倉庫,也可以從指定倉庫 pull 拉取鏡像到本地。

Docker有下面這些組成

1.Docker 服務器守護程序(server daemon),用于管理所有的容器。

2.Docker 命令行客戶端,用于控制服務器守護程序。

3.Docker 鏡像:查找和瀏覽 docker 容器鏡像。

Docker特性

文件系統隔離:每個進程容器運行在完全獨立的根文件系統里。

資源隔離:可以使用cgroup為每個進程容器分配不同的系統資源,例如CPU和內存。

網絡隔離:每個進程容器運行在自己的網絡命名空間里,擁有自己的虛擬接口和IP地址。

寫時復制:采用寫時復制方式創建根文件系統,這讓部署變得極其快捷,并且節省內存和硬盤空間。

日志記錄:Docker將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索。

變更管理:容器文件系統的變更可以提交到新的映像中,并可重復使用以創建更多的容器。無需使用模板或手動配置。

交互式Shell:Docker可以分配一個虛擬終端并關聯到任何容器的標準輸入上,例如運行一個一次性交互shell。

Docker兩個基礎概念images與container

Container和Image 在Docker的世界里,Image是指一個只讀的層(Layer),這里的層是AUFS里的概念,最直觀的方式就是看一下docker官方給出的圖:

Docker使用了一種叫AUFS的文件系統,這種文件系統可以讓你一層一層地疊加修改你的文件,最底下的文件系統是只讀的,如果需要修改文件,AUFS 會增加一個可寫的層(Layer),這樣有很多好處,例如不同的Container可以共享底層的只讀文件系統(同一個Kernel),使得你可以跑N多 個Container而不至于你的硬盤被擠爆了!這個只讀的層就是Image!而如你所看到的,一個可寫的層就是Container。

那Image和Container的區別是什么?很簡單,他們的區別僅僅是一個是只讀的層,一個是可寫的層,你可以使用docker commit 命令,將你的Container變成一個Image,也就是提交你所運行的Container的修改內容,變成一個新的只讀的Image,這非常類似于git commit命令。

前置準備和安裝Docker(基于CentOS 7 安裝 Docker CE)

Docker 要求 CentOS 系統的內核版本高于 3.10 ,安裝前需要驗證 CentOS 版本是否支持 Docker。

# 命令查看你當前的內核版本
$ uname -r

# 更新yum
$ sudo yum makecache fast

# 安裝yum-utils
$ sudo yum install yum-utils

# 使用以下命令設置穩定存儲庫
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 卸載舊版本(如果安裝過舊版本的話)
$ sudo yum remove docker  docker-common docker-selinux docker-engine

# 安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 安裝Docker
$ sudo yum install docker-ce

# 啟動、停止、重啟Docker服務
$ systemctl start | stop | restart  docker.service

# 設置開機啟動、關閉服務
$ systemctl enable | disable docker.service

# 驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
$ docker version

[root@localhost ~]# docker version
Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24
 Built: Wed Mar 21 23:09:15 2018
 OS/Arch:       linux/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.03.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   0520e24
  Built:        Wed Mar 21 23:13:03 2018
  OS/Arch:      linux/amd64
  Experimental: false
[root@localhost ~]# 

# docker通過運行hello-world 映像驗證是否已正確安裝。
$ sudo docker run hello-world
Docker的常用操作
# 搜索鏡像(我這里搜索的是tomcat的鏡像)
$ docker search tomcat

# 下載鏡像(在搜索出來的鏡像列表中選擇一個下載,我這里下載的是官方提供的centos鏡像,速度會有點慢,耐心等待)
$ docker pull tomcat

# 列出本機的鏡像
$ docker images

# 基于image創建一個容器,運行完畢后并退出
$ docker run [centos] /bin/echo "Hello world"

# 運行一個交互式容器,-t表示指定一個容器內的偽tty。
# -i表示創建一個交互式連接,命令運行后,將會進入shell交互式界面,可執行任意的命令.
$ docker run -t -i centos /bin/bash

# 創建一個帶名字的容器
$ docker run -d --name myweb centos /bin/bash

# 開始/停止/強制停止/重啟一個的容器
$ docker start/stop/kill/restart [container]

# 刪除一個容器
$ docker rm [container]

# 進入容器內容
$ docker exec -it [container] /bin/bash

# 列出正在運行的容器,[-a]列出所有狀態下的容器,[-l]只列出最后一個啟動的容器。
$ docker ps [-a] [-l]
docker容器的常用軟件安裝過程 docker中運行mysql
# -p 3306:3306:表示在這個容器中使用3306端口(第二個)映射到本機的端口號也為3306(第一個)
# 創建一個容器
docker run -d 
--name mysql 
-p 3306:3306 
-e MYSQL_ROOT_PASSWORD=[password] 
-v /xxx/mysql:/var/lib/mysql 
-v /etc/my.cnf:/etc/my.cnf mysql:5.7.23 

# 創建用戶
create user "user"@"%" identified by "password";
# 授權
grant replication slave on *.* to "user"@"%";
# 刷新
flush privileges; 
docker中運行redis
# 運行一個docker容器
docker run -d 
--name redis 
-p 6379:6379 
-v /xxx/redis:/data redis redis-server 
--appendonly yes 
--requirepass "[password]"

# 參數詳解
docker run 
# 端口映射 宿主機:容器
-p 6379:6379           
# 映射數據目錄 rw 為讀寫
-v /xxx/data:/data:rw  
# 掛載配置文件 ro 為readonly
-v /xxx/conf/redis.conf:/etc/redis/redis.conf:ro  
# 給與一些權限
--privileged=true      
# 給容器起個名字
--name redis           
# 開啟數據持久化
--appendonly yes       
# deamon 運行 服務使用指定的配置文件
-d redis redis-server /xxx/conf/redis.conf 
docker中運行nexus
docker run -d 
-p 8080:8080 
--name nexus 
-v /xxx/nexus:/var/nexus-data 
--restart=always sonatype/nexus3
docker中運行Jenkins
docker run -d 
-p 8080:8080 
-p 50000:50000 
--name jenkins 
--privileged=true 
-v /xxx/jenkins:/var/jenkins_home jenkins
docker中安裝gitlab
docker run --detach 
    --hostname 120.76.77.230 
    --publish 444:443 
    --publish 8088:8088 
    --publish 25:22 
    --name gitlab 
    --restart always 
    --volume /xxx/gitlab/config:/etc/gitlab 
    --volume /xxx/gitlab/logs:/var/log/gitlab 
    --volume /xxx/gitlab/data:/var/opt/gitlab 
    gitlab/gitlab-ce:latest

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

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

相關文章

  • 數人云工程師手記 | 新手快速入門Docker最新版管理工具

    摘要:在之前公眾號的數人云工程師手記基于的集群管理開發實踐對的服務發現及負載均衡有詳細的介紹。服務名稱為服務命名,必須為英文或數字。 本文是數人云9月22日線上微信群分享的文章實錄。數人云容器管理面板Crane開源以來,很多小伙伴對它還不是非常了解,數人云工程師金鑫從Crane技術背景、環境準備和使用步驟等方面為大家做了詳細的介紹,并整理大家常見的問題逐一進行了解答。 引言 Docker1....

    Tangpj 評論0 收藏0
  • URLOS應用開發入門案例——基于docker鏡像制作一個可安裝并可快速分發的gitbook應用

    摘要:是一個基于的命令行工具,可使用和來制作精美的電子書,并非關于的教程。使用制作電子書,必備兩個文件和。今天,我就教大家如何使用快速制作應用,該應用是基于鏡像制作,可以隨意運行在任何一個安裝有的主機上。首先安裝安裝完成后,地址欄輸入即可訪問。 GitBook 是一個基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 來制作精美的電子書,GitBook 并...

    only_do 評論0 收藏0

發表評論

0條評論

bingo

|高級講師

TA的文章

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