Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協定開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制 機製,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
Docker 是一個用於開發,交付和執行應用程式的開放平臺。Docker 使您能夠將應用程式與基礎架構分開,從而可以快速交付軟體。藉助
Docker,您可以與管理應用程式相同的方式來管理基礎架構。通過利用 Docker
的方法來快速交付,測試和部署程式碼,您可以大大減少編寫程式碼和在生產環境中執行程式碼之間的延遲。
響應式部署和擴充套件
Docker 是基於容器的平臺,允許高度可移植的工作負載。Docker 容器可以在開發人員的本機上,數據中心的物理或虛擬機器上,雲服務上或混合環境中執行。
Docker 的可移植性和輕量級的特性,還可以使您輕鬆地完成動態管理的工作負擔,並根據業務需求指示,實時擴充套件或拆除應用程式和服務。
在同一硬體上執行更多工作負載
Docker輕巧快速。它爲基於虛擬機器管理程式的虛擬機器提供了可行、經濟、高效的替代方案,因此您可以利用更多的計算能力來實現業務目標。Docker
非常適合於高密度環境以及中小型部署,而您可以用更少的資源做更多的事情。
Docker 支援以下的 64 位 CentOS 版本:
安裝命令如下:
[root@localhost ~]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用國內 daocloud 一鍵安裝命令:
[root@localhost ~]# curl -sSL https://get.daocloud.io/docker | sh
較舊的 Docker 版本稱爲 docker 或 docker-engine 。如果已安裝這些程式,請解除安裝它們以及相關的依賴項。
[root@localhost ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
使用 Docker 倉庫進行安裝
在新主機上首次安裝 Docker Engine-Community 之前,需要設定 Docker 倉庫。之後,您可以從倉庫安裝和更新 Docker。
設定倉庫
[root@localhost ~]# yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令來替換國內yum源。
阿裡雲
[root@localhost ~]# yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清華大學源
[root@localhost ~]# yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
安裝 Docker Engine-Community
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io
[root@localhost ~]# systemctl start docker
執行時提示IPv4轉發已禁用、但安裝工作正常。
[root@localhost ~]# docker run hello-world
WARNING: IPv4 forwarding is disabled. Networking will not work.
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/
解決方式:
第一步:在宿主機上執行echo 「net.ipv4.ip_forward=1」 >>/usr/lib/sysctl.d/00-system.conf
第二步:重新啓動network和docker服務
第三步:驗證是否成功
[root@localhost ~]# echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl restart network
[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.
問題解決 docker安裝完成
Docker 允許你在容器內執行應用程式, 使用 docker run 命令來在容器內執行一個應用程式。
輸出Hello world
[root@localhost ~]# docker run ubuntu /bin/echo "Hello World"
Hello World
各個參數解析:docker run ubuntu /bin/echo 「Hello World」
1、docker: Docker 的二進制執行檔案。
2、run: 與前面的 docker 組合來執行一個容器。
3、ubuntu 指定要執行的映象,Docker 首先從本地主機上查詢映象是否存在,如果不存在,Docker 就會從映象倉庫 Docker Hub 下載公共映象。
4、/bin/echo "Hello world": 在啓動的容器裡執行的命令
我們通過 docker 的兩個參數 -i -t,讓 docker 執行的容器實現"對話"的能力:
[root@localhost ~]# docker run -i -t ubuntu /bin/bash
root@8f71d04e551e:/#
各個參數解析:docker run -i -t
1、-t: 在新容器內指定一個僞終端或終端。
2、-i: 允許你對容器內的標準輸入 (STDIN) 進行互動。
注意第二行 root@8f71d04e551e:/#,此時我們已進入一個 ubuntu系統的容器
檢視當前系統的版本資訊和當前目錄下的檔案列表
root@8f71d04e551e:/# ls
bin dev home lib32 libx32 mnt proc run srv tmp var
boot etc lib lib64 media opt root sbin sys usr
可以通過執行 exit 命令或者使用 CTRL+D 來退出容器。
root@8f71d04e551e:/# exit
exit
[root@localhost ~]#
使用以下命令建立一個以進程方式執行的容器
[root@localhost ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
這個長字串叫做容器 ID,對每個容器來說都是唯一的,我們可以通過容器 ID 來檢視對應的容器發生了什麼。
首先,我們需要確認容器有在執行,可以通過 docker ps 來檢視:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND ...
5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...
輸出詳情介紹:
CONTAINER ID: 容器 ID。
IMAGE: 使用的映象。
COMMAND: 啓動容器時執行的命令。
CREATED: 容器的建立時間。
STATUS: 容器狀態。
狀態有7種:
1、created(已建立)
2、restarting(重新啓動中)
3、running(執行中)
4、removing(遷移中)
5、paused(暫停)
6、exited(停止)
7、dead(死亡)
使用 docker stop 命令來停止容器:
[root@localhost ~]# docker stop 5917eac21c36
再次檢視docker後臺執行狀態
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器已經停止