Docker | Docker 簡介、安裝與入門

      網(wǎng)友投稿 670 2025-03-31

      docker


      官方原話:?docker provides a way to run applications securely isolated in a container, packaged with all its dependencies and libraries.

      Docker 是一個開源的應(yīng)用容器引擎,基于?Go 語言?并遵從 Apache2.0 協(xié)議開源。

      Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實現(xiàn)虛擬化。

      容器是完全使用沙箱機(jī)制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

      Docker 從 17.03 版本之后分為 CE(Community Edition: 社區(qū)版) 和 EE(Enterprise Edition: 企業(yè)版)。

      Docker原理

      Docker是利用Linux內(nèi)核虛擬機(jī)化技術(shù)(LXC),提供輕量級的虛擬化,以便隔離進(jìn)程和資源。LXC不是硬件的虛擬化,而是Linux內(nèi)核的級別的虛擬機(jī)化,相對于傳統(tǒng)的虛擬機(jī),節(jié)省了很多硬件資源。

      NameSpace

      LXC是利用內(nèi)核namespace技術(shù),進(jìn)行進(jìn)程隔離。其中pid, net, ipc, mnt, uts 等namespace將container的進(jìn)程, 網(wǎng)絡(luò), 消息, 文件系統(tǒng)和hostname 隔離開。

      Control Group

      LXC利用的宿主機(jī)共享的資源,雖然用namespace進(jìn)行隔離,但是資源使用沒有收到限制,這里就需要用到Control Group技術(shù),對資源使用進(jìn)行限制,設(shè)定優(yōu)先級,資源控制等。

      Docker的組成

      Docker Client 客戶端

      Docker Daemon 守護(hù)進(jìn)程

      Docker Image 鏡像

      Docker Container 容器

      Docker基本概念介紹

      鏡像(Image)

      這里面保存了應(yīng)用和需要的依賴環(huán)境 比如運行runtime 和webapp

      為什么需要多個鏡像?當(dāng)開發(fā)、構(gòu)建和運行容器化應(yīng)用程序時,我們通常會有不同優(yōu)先級。通過為這些 獨立的任務(wù)提供不同鏡像

      容器(Container)

      鏡像的實例。一個容器代表一個正在運行的應(yīng)用程序、進(jìn)程或服務(wù)。它由 Docker 鏡像、執(zhí)行環(huán)境和標(biāo)準(zhǔn)指令集組成。需要擴(kuò)展服務(wù)時,我

      真正將鏡像跑起來的東西,鏡像在容器里面。可以看作是一個完全隔離的盒子。

      一個容器鏡像實例 代表一個獨立的進(jìn)程。

      Hub

      遠(yuǎn)程存放鏡像的平臺, hub上已經(jīng)有很多制作好的鏡像 比如redis mongodb。

      倉庫?(repository)

      倉庫用來保存鏡像的地方。

      鏡像構(gòu)建完成后,可以直接在當(dāng)前宿主上運行,但是 如果需要在其它服務(wù)器上使用這個鏡像,就需要一個集中存儲、分發(fā)鏡像的服務(wù)。倉庫就是這樣的一個服務(wù)。

      Docker應(yīng)用場景

      在非常低的額外開銷的情況下,打造一個一致性的環(huán)境。

      簡化配置

      Docker | Docker 簡介、安裝與入門

      代碼流水線(Code Pipeline)管理

      提高開發(fā)效率

      隔離應(yīng)用

      整合服務(wù)器

      調(diào)試能力Docker

      多租戶環(huán)境

      快速部署

      Docker 的優(yōu)點

      Docker 是一個用于開發(fā),交付和運行應(yīng)用程序的開放平臺。Docker 使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分開,從而可以快速交付軟件。借助 Docker,您可以與管理應(yīng)用程序相同的方式來管理基礎(chǔ)架構(gòu)。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產(chǎn)環(huán)境中運行代碼之間的延遲。

      1、快速,一致地交付您的應(yīng)用程序

      Docker 允許開發(fā)人員使用您提供的應(yīng)用程序或服務(wù)的本地容器在標(biāo)準(zhǔn)化環(huán)境中工作,從而簡化了開發(fā)的生命周期。

      容器非常適合持續(xù)集成和持續(xù)交付(CI / CD)工作流程,請考慮以下示例方案:

      您的開發(fā)人員在本地編寫代碼,并使用 Docker 容器與同事共享他們的工作。

      他們使用 Docker 將其應(yīng)用程序推送到測試環(huán)境中,并執(zhí)行自動或手動測試。

      當(dāng)開發(fā)人員發(fā)現(xiàn)錯誤時,他們可以在開發(fā)環(huán)境中對其進(jìn)行修復(fù),然后將其重新部署到測試環(huán)境中,以進(jìn)行測試和驗證。

      測試完成后,將修補程序推送給生產(chǎn)環(huán)境,就像將更新的鏡像推送到生產(chǎn)環(huán)境一樣簡單。

      2、響應(yīng)式部署和擴(kuò)展

      Docker 是基于容器的平臺,允許高度可移植的工作負(fù)載。Docker 容器可以在開發(fā)人員的本機(jī)上,數(shù)據(jù)中心的物理或虛擬機(jī)上,云服務(wù)上或混合環(huán)境中運行。

      Docker 的可移植性和輕量級的特性,還可以使您輕松地完成動態(tài)管理的工作負(fù)擔(dān),并根據(jù)業(yè)務(wù)需求指示,實時擴(kuò)展或拆除應(yīng)用程序和服務(wù)。

      3、在同一硬件上運行更多工作負(fù)載

      Docker 輕巧快速。它為基于虛擬機(jī)管理程序的虛擬機(jī)提供了可行、經(jīng)濟(jì)、高效的替代方案,因此您可以利用更多的計算能力來實現(xiàn)業(yè)務(wù)目標(biāo)。Docker 非常適合于高密度環(huán)境以及中小型部署,而您可以用更少的資源做更多的事情。

      Docker CE安裝

      環(huán)境準(zhǔn)備

      cat /etc/redhat-release

      CentOS Linux release 7.7.1908 (Core)

      uname -r

      3.10.0-1062.4.1.el7.x86_64

      安裝依賴

      yum install -y yum-utils device-mapper-persistent-data lvm2

      設(shè)置穩(wěn)定的倉庫

      yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

      設(shè)置阿里云鏡像源

      因為docker默認(rèn)官方的鏡像源地址是國外的,速度很慢,這里將數(shù)據(jù)源設(shè)置為阿里云的鏡像。

      yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

      安裝最新版Docker-ce

      yum install -y docker-ce

      啟動docker

      systemctl start docker

      開機(jī)啟動docker

      systemctl enable docker

      Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

      查看是否啟動成功

      systemctl status docker

      ● docker.service - Docker Application Container Engine

      Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)

      Active: active (running) since Wed 2019-12-25 15:00:31 CST; 55s ago

      Docs: https://docs.docker.com

      Main PID: 23749 (dockerd)

      Tasks: 10

      Memory: 37.7M

      CGroup: /system.slice/docker.service

      └─23749 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.221850961+08:00" level=info msg="scheme \"unix\" not regist...le=grpc

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.221867173+08:00" level=info msg="ccResolverWrapper: sending...le=grpc

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.221889025+08:00" level=info msg="ClientConn switching balan...le=grpc

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.321094530+08:00" level=info msg="Loading containers: start."

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.514237489+08:00" level=info msg="Default bridge (docker0) i...ddress"

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.572754563+08:00" level=info msg="Loading containers: done."

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.636432385+08:00" level=info msg="Docker daemon" commit=633a...19.03.5

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.636567302+08:00" level=info msg="Daemon has completed initialization"

      Dec 25 15:00:31 drugai systemd[1]: Started Docker Application Container Engine.

      Dec 25 15:00:31 drugai dockerd[23749]: time="2019-12-25T15:00:31.663111354+08:00" level=info msg="API listen on /var/run/docker.sock"

      Hint: Some lines were ellipsized, use -l to show in full.

      查看docker版本

      docker version

      Client: Docker Engine - Community

      Version: ? ? ? ? ? 19.03.5

      API version: ? ? ? 1.40

      Go version: ? ? ? ?go1.12.12

      Git commit: ? ? ? ?633a0ea

      Built: ? ? ? ? ? ? Wed Nov 13 07:25:41 2019

      OS/Arch: ? ? ? ? ? linux/amd64

      Experimental: ? ? ?false

      Server: Docker Engine - Community

      Engine:

      Version: ? ? ? ? ?19.03.5

      API version: ? ? ?1.40 (minimum version 1.12)

      Go version: ? ? ? go1.12.12

      Git commit: ? ? ? 633a0ea

      Built: ? ? ? ? ? ?Wed Nov 13 07:24:18 2019

      OS/Arch: ? ? ? ? ?linux/amd64

      Experimental: ? ? false

      containerd:

      Version: ? ? ? ? ?1.2.10

      GitCommit: ? ? ? ?b34a5c8af56e510852c35414db4c1f4fa6172339

      runc:

      Version: ? ? ? ? ?1.0.0-rc8+dev

      GitCommit: ? ? ? ?3e425f80a8c931f88e6d94a8c831b9d5aa481657

      docker-init:

      Version: ? ? ? ? ?0.18.0

      GitCommit: ? ? ? ?fec3683

      Docker鏡像管理

      搜索所有centos的docker鏡像

      docker search centos

      NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DESCRIPTION ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? STARS ? ? ? ? ? ? ? OFFICIAL ? ? ? ? ? ?AUTOMATED

      centos ? ? ? ? ? ? ? ? ? ? ? ? ? ? The official build of CentOS. ? ? ? ? ? ? ? ? ? 5737 ? ? ? ? ? ? ? ?[OK]

      ansible/centos7-ansible ? ? ? ? ? ?Ansible on Centos7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?126 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      jdeathe/centos-ssh ? ? ? ? ? ? ? ? OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … ? 114 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      consol/centos-xfce-vnc ? ? ? ? ? ? Centos container with "headless" VNC session… ? 101 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      centos/mysql-57-centos7 ? ? ? ? ? ?MySQL 5.7 SQL database server ? ? ? ? ? ? ? ? ? 66

      imagine10255/centos6-lnmp-php56 ? ?centos6-lnmp-php56 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?57 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[OK]

      tutum/centos ? ? ? ? ? ? ? ? ? ? ? Simple CentOS docker image with SSH access ? ? ?44

      centos/postgresql-96-centos7 ? ? ? PostgreSQL is an advanced Object-Relational … ? 39

      kinogmt/centos-ssh ? ? ? ? ? ? ? ? CentOS with SSH ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 29 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[OK]

      pivotaldata/centos-gpdb-dev ? ? ? ?CentOS image for GPDB development. Tag names… ? 10

      guyton/centos6 ? ? ? ? ? ? ? ? ? ? From official centos6 container with full up… ? 9 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      nathonfowlie/centos-jre ? ? ? ? ? ?Latest CentOS image with the JRE pre-install… ? 8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      drecom/centos-ruby ? ? ? ? ? ? ? ? centos ruby ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      darksheer/centos ? ? ? ? ? ? ? ? ? Base Centos Image -- Updated hourly ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      mamohr/centos-java ? ? ? ? ? ? ? ? Oracle Java 8 Docker image based on Centos 7 ? ?3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      pivotaldata/centos ? ? ? ? ? ? ? ? Base centos, freshened up a little with a Do… ? 3

      pivotaldata/centos-mingw ? ? ? ? ? Using the mingw toolchain to cross-compile t… ? 2

      miko2u/centos6 ? ? ? ? ? ? ? ? ? ? CentOS6 日本語環(huán)境 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      pivotaldata/centos-gcc-toolchain ? CentOS with a toolchain, but unaffiliated wi… ? 2

      mcnaughton/centos-base ? ? ? ? ? ? centos base image ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      indigo/centos-maven ? ? ? ? ? ? ? ?Vanilla CentOS 7 with Oracle Java Developmen… ? 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      blacklabelops/centos ? ? ? ? ? ? ? CentOS Base Image! Built and Updates Daily! ? ? 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      pivotaldata/centos6.8-dev ? ? ? ? ?CentosOS 6.8 image for GPDB development ? ? ? ? 0

      pivotaldata/centos7-dev ? ? ? ? ? ?CentosOS 7 image for GPDB development ? ? ? ? ? 0

      smartentry/centos ? ? ? ? ? ? ? ? ?centos with smartentry ? ? ? ? ? ? ? ? ? ? ? ? ?0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [OK]

      查看docker鏡像

      docker images

      REPOSITORY(來自那個倉庫) TAG(標(biāo)簽) IMAGE ID(唯一ID) CREATED(創(chuàng)建時間) SIZE(大小)

      Docker常用命令

      docker ps --查看目前正在運行的所有容器 -a 顯示包括已經(jīng)停止的容器

      docker pull --拉取鏡像

      docker rmi --刪除鏡像 后面可以直接根據(jù)鏡像 名稱或者tag 前首字母匹配

      docker start container_id --打開容器 (這里可以是容器id或名稱)

      docker stop container_id --停止容器 (這里可以是容器id或名稱)

      docker rm --刪除容器(只有停止的容器才可以刪除)

      docker build --使用 Dockerfile 創(chuàng)建鏡像

      docker exec --容器中執(zhí)行命令,例如:docker exec -it container_id(容器名或id) /bin/bash (bin/bash要執(zhí)行的命令或工具)

      docker logs --查看 容器日志 ,例如:docker logs -f -t --tail 10 container_id (容器名或id)

      參考:

      1.?https://www.cnblogs.com/zuoyang/p/9561009.html

      2.?https://www.linuxidc.com/Linux/2019-12/161823.htm

      Docker 容器

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:訪談企業(yè)流程圖制作模板(公司簡紹流程模板)
      下一篇:wps表格怎么修改單元格格式(wps表格怎么更改格式)
      相關(guān)文章
      国外亚洲成AV人片在线观看| 国产精品无码亚洲一区二区三区| 亚洲国产婷婷香蕉久久久久久| 亚洲精品国产综合久久久久紧| 天堂亚洲国产中文在线| 亚洲国产成人精品不卡青青草原| 亚洲av日韩av高潮潮喷无码| 久久久亚洲精品无码| 亚洲A∨无码无在线观看| 亚洲精品无码不卡| 久久久久亚洲精品日久生情| 亚洲欧洲日本天天堂在线观看| 亚洲黄色免费网站| 亚洲一区免费观看| 亚洲欧洲日产专区| 亚洲另类小说图片| 亚洲国产激情在线一区| 中文字幕亚洲综合久久综合 | 男人天堂2018亚洲男人天堂 | 亚洲乱码精品久久久久..| 黑人精品videos亚洲人| 亚洲精品乱码久久久久66| 亚洲av午夜福利精品一区| 久久夜色精品国产噜噜亚洲AV| 亚洲视频手机在线| xxx毛茸茸的亚洲| 亚洲日韩国产二区无码| 色婷婷亚洲一区二区三区| 亚洲免费无码在线| 亚洲精品无码成人片久久| 亚洲成人免费在线| 亚洲国产成人综合| 亚洲欧美国产精品专区久久| 天天综合亚洲色在线精品| 中文字幕亚洲第一| 亚洲成AV人片一区二区密柚| 久久亚洲精品无码VA大香大香| 亚洲一本之道高清乱码| 亚洲国产精华液2020| 亚洲人成电影网站国产精品| 亚洲成AV人片一区二区|