Docker教程(一)入門教程

1.什麼是 Docker

在這裏插入圖片描述
官網的介紹是“Docker is the world’s leading software container platform.” 官方給Docker的定位是一個應用容器平臺

Docker 是一個容器平臺的領導者 Docker 容器平臺 Docker 應用容器平臺

application項目 Mysql Redis MongoDB ElasticSeacrh …

application項目 Docker 應用容器平臺 Mysql Redis mongoDB ElasticSearch tomcat nginx…

2.爲什麼是Docker

  • 合作開發的時候,在本機可以跑,別人的電腦跑不起來

    這裏我們拿java Web應用程序舉例,我們一個java Web應用程序涉及很多東西,比如jdk、tomcat、spring等等。當這些其中某一項版本不一致的時候,可能就會導致應用程序跑不起來這種情況。Docker則將程序直接打包成鏡像,直接運行在容器中即可。

  • 服務器自己的程序掛了,結果發現是別人程序出了問題把內存吃完了,自己程序因爲內存不夠就掛了

    這種也是一種比較常見的情況,如果你的程序重要性不是特別高的話,公司基本上不可能讓你的程序獨享一臺服務器的,這時候你的服務器就會跟公司其他人的程序共享一臺服務器,所以不可避免地就會受到其他程序的干擾,導致自己的程序出現問題。Docker就很好解決了環境隔離的問題,別人程序不會影響到自己的程序。

  • 公司要弄一個活動,可能會有大量的流量進來,公司需要再多部署幾十臺服務器

    在沒有Docker的情況下,要在幾天內部署幾十臺服務器,這對運維來說是一件非常折磨人的事,而且每臺服務器的環境還不一定一樣,就會出現各種問題,最後部署地頭皮發麻。用Docker的話,我只需要將程序打包到鏡像,你要多少臺服務,我就給力跑多少容器,極大地提高了部署效率。


3.Docker和虛擬機區別

關於Docker與虛擬機的區別,我在網上找到的一張圖,非常直觀形象地展示出來,話不多說,直接上圖。
在這裏插入圖片描述
比較上面兩張圖,我們發現虛擬機是攜帶操作系統,本身很小的應用程序卻因爲攜帶了操作系統而變得非常大,很笨重。Docker是不攜帶操作系統的,所以Docker的應用就非常的輕巧。另外在調用宿主機的CPU、磁盤等等這些資源的時候,拿內存舉例,虛擬機是利用Hypervisor去虛擬化內存,整個調用過程是虛擬內存->虛擬物理內存->真正物理內存,但是Docker是利用Docker Engine去調用宿主的的資源,這時候過程是虛擬內存->真正物理內存。

傳統虛擬機 Docker容器
磁盤佔用 幾個GB到幾十個GB左右 幾十MB到幾百MB左右
CPU內存佔用 虛擬操作系統非常佔用CPU和內存 Docker引擎佔用極低
啓動速度 (從開機到運行項目)幾分鐘 (從開啓容器到運行項目)幾秒
安裝管理 需要專門的運維技術 安裝、管理方便
應用部署 每次部署都費時費力 從第二次部署開始輕鬆簡捷
耦合性 多個應用服務安裝到一起,容易互相影響 每個應用服務一個容器,達成隔離
系統依賴 需求相同或相似的內核,目前推薦是Linux

4.Docker 的核心

在這裏插入圖片描述

  • 鏡像: 一個鏡像代表一個應用環境,他是一個只讀的文件,如 mysql鏡像,tomcat鏡像,nginx鏡像等
  • 容器: 鏡像每次運行之後就是產生一個容器,就是正在運行的鏡像,特點就是可讀可寫
  • 倉庫:用來存放鏡像的位置,類似於maven倉庫,也是鏡像下載和上傳的位置
  • dockerFile:docker生成鏡像配置文件,用來書寫自定義鏡像的一些配置
  • tar:一個對鏡像打包的文件,日後可以還原成鏡像

4.Docker的安裝(centos7.x)

5.1 卸載原有 docker

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

5.2 安裝docker

安裝docker依賴

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

設置docker的yum源

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

安裝最新版的docker

$ sudo yum install docker-ce docker-ce-cli containerd.io

指定版本安裝docker

$ yum list docker-ce --showduplicates | sort -r
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
$ sudo yum install docker-ce-18.09.5-3.el7 docker-ce-cli-18.09.5-3.el7 containerd.io

啓動docker

$ sudo systemctl start docker

關閉docker

$ sudo systemctl stop docker

測試docker安裝

$ sudo docker run hello-world

6. Docker 配置阿里鏡像加速服務

6.1 docker 運行流程

在這裏插入圖片描述

6.2 docker配置阿里雲鏡像加速

  • 訪問阿里雲登錄自己賬號,搜索鏡像服務,可獲取免費的docker鏡像加速服務
    在這裏插入圖片描述
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 驗證docker的鏡像加速是否生效
[root@localhost ~]# docker info
		..........
    127.0.0.0/8
   Registry Mirrors:
    'https://lz2nib3q.mirror.aliyuncs.com/'
   Live Restore Enabled: false
   Product License: Community Engine

7.Docker的入門應用

7.1 docker 的第一個程序

docker run hello-world

[root@localhost ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章