springboot10(docker)
一 Docker
1 what's the Docker?
? Docker是一個開源的應用容器引擎,輕量級容器技術。
? Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
? 容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
2 Docker的應用場景
- Web 應用的自動化打包和發布。
- 自動化測試和持續集成、發布。
- 在服務型環境中部署和調整數據庫或其他的后臺應用。
- 從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。
3 Docker 的優點
- 1、簡化程序:
Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數周的 任務,在Docker容器的處理下,只需要數秒就能完成。 - 2、避免選擇恐懼癥:
如果你有選擇恐懼癥,還是資深患者。那么你可以使用 Docker 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、后臺應用、數據庫應用、大數據應用比如 Hadoop 集群、消息隊列等等都可以打包成一個鏡像部署。 - 3、節省開支:
一方面,云計算時代到來,使開發者不必為了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思維定勢。Docker 與云的結合,讓云空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。
4 相關Docker文檔
二 Docker核心概念
1、docker主機:安裝了docker程序的機器(Docker直接安裝在操作系統之上)
2、docker客戶端:連接docker主機進行操作
3、docker倉庫:用來保存打包好的鏡像
4、docker鏡像:打包好的軟件
5、docker容器:鏡像啟動后的實例稱為一個容器
Linux默認安裝的docker版本是社區版-ce 免費的
三 Docker安裝
安裝 Docker
從 2017 年 3 月開始 docker 在原來的基礎上分為兩個分支版本: Docker CE 和 Docker EE。
Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。
本文介紹 Docker CE 的安裝使用。
移除舊的版本:
$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine安裝一些必要的系統工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加軟件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo更新 yum 緩存:
sudo yum makecache fast安裝 Docker-ce:
sudo yum -y install docker-ce啟動 Docker 后臺服務
sudo systemctl start docker使用腳本安裝 Docker
1、使用 sudo 或 root 權限登錄 Centos。
2、確保 yum 包更新到最新。
$ sudo yum update3、執行 Docker 安裝腳本。
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh執行這個腳本會添加 docker.repo 源并安裝 Docker。
4、啟動 Docker 進程。
sudo systemctl start docker5、驗證 docker 是否安裝成功并在容器中執行一個測試的鏡像。
$ sudo docker run hello-world docker ps到此,Docker 在 CentOS 系統的安裝完成。
鏡像加速
鑒于國內網絡問題,后續拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的鏡像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。
請在該配置文件中加入(沒有該文件的話,請先建一個):
{"registry-mirrors": ["http://hub-mirror.c.163.com"] }刪除 Docker CE
執行以下命令來刪除 Docker CE:
$ sudo yum remove docker-ce $ sudo rm -rf /var/lib/docker使用阿里云的鏡像加速
在自己的阿里云帳號下找到
1. 安裝/升級Docker客戶端
推薦安裝1.10.0以上版本的Docker客戶端,參考文檔 docker-ce
2. 配置鏡像加速器
針對Docker客戶端版本大于 1.10.0 的用戶
您可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https://70ofd2cf.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart dockerDocker Hub
四 鏡像使用
列出鏡像列表
我們可以使用 docker images 來列出本地主機上的鏡像。
runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 11 months ago 348.8 MB各個選項說明:
- REPOSITORY:表示鏡像的倉庫源
- TAG:鏡像的標簽
- IMAGE ID:鏡像ID
- CREATED:鏡像創建時間
- SIZE:鏡像大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如ubuntu倉庫源里,有15.10、14.04等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
所以,我們如果要使用版本為15.10的ubuntu系統鏡像來運行容器時,命令如下:
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash root@d77ccb2e5cca:/#如果要使用版本為14.04的ubuntu系統鏡像來運行容器時,命令如下:
runoob@runoob:~$ docker run -t -i ubuntu:14.04 /bin/bash root@39e968165990:/#如果你不指定一個鏡像的版本標簽,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像。
獲取一個新的鏡像
當我們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像。如果我們想預先下載這個鏡像,我們可以使用 docker pull 命令來下載它。
Crunoob@runoob:~$ docker pull ubuntu:13.10 13.10: Pulling from library/ubuntu 6599cadaf950: Pull complete 23eda618d451: Pull complete f0be3084efe9: Pull complete 52de432f084b: Pull complete a3ed95caeb02: Pull complete Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3 Status: Downloaded newer image for ubuntu:13.10下載完成后,我們可以直接使用這個鏡像來運行容器。
查找鏡像
我們可以從 Docker Hub 網站來搜索鏡像,Docker Hub 網址為: https://hub.docker.com/
我們也可以使用 docker search 命令來搜索鏡像。比如我們需要一個httpd的鏡像來作為我們的web服務。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。
runoob@runoob:~$ docker search httpdNAME:鏡像倉庫源的名稱
DESCRIPTION:鏡像的描述
OFFICIAL:是否docker官方發布
拖取鏡像
我們決定使用上圖中的httpd 官方版本的鏡像,使用命令 docker pull 來下載鏡像。
runoob@runoob:~$ docker pull httpd Using default tag: latest latest: Pulling from library/httpd 8b87079b7a06: Pulling fs layer a3ed95caeb02: Download complete 0d62ec9c6a76: Download complete a329d50397b9: Download complete ea7c1f032b5c: Waiting be44112b72c7: Waiting下載完成后,我們就可以使用這個鏡像了。
runoob@runoob:~$ docker run httpd創建鏡像
當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。
- 1.從已經創建的容器中更新鏡像,并且提交這個鏡像
- 2.使用 Dockerfile 指令來創建一個新的鏡像
更新鏡像
更新鏡像之前,我們需要使用鏡像來創建一個容器。
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash root@e218edb10161:/#在運行的容器內使用 apt-get update 命令進行更新。
在完成操作之后,輸入 exit命令來退出這個容器。
此時ID為e218edb10161的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。
runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8各個參數說明:
- -m:提交的描述信息
- -a:指定鏡像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要創建的目標鏡像名
我們可以使用 docker images 命令來查看我們的新鏡像 runoob/ubuntu:v2:
runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/ubuntu v2 70bf1840fd7c 15 seconds ago 158.5 MB ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B training/webapp latest 6fae60ef3446 12 months ago 348.8 MB使用我們的新鏡像 runoob/ubuntu 來啟動一個容器
runoob@runoob:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash root@1a9fbdeb5da3:/#構建鏡像
我們使用命令 docker build , 從零開始來創建一個新的鏡像。為此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。
runoob@runoob:~$ cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com"RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像內執行命令,安裝了什么。。。
然后,我們使用 Dockerfile 文件,通過 docker build 命令來構建一個鏡像。
runoob@runoob:~$ docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com"---> Using cache---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd---> Using cache---> 0397ce2fbd0a Step 4 : RUN useradd runoob ......參數說明:
- -t :指定要創建的目標鏡像名
- . :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
使用docker images 查看創建的鏡像已經在列表中存在,鏡像ID為860c279d2fec
runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/centos 6.7 860c279d2fec About a minute ago 190.6 MB runoob/ubuntu v2 70bf1840fd7c 17 hours ago 158.5 MB ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB php 5.6 f40e9e0f10c8 10 days ago 444.8 MB nginx latest 6f8d099c3adc 12 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB training/webapp latest 6fae60ef3446 12 months ago 348.8 MB我們可以使用新的鏡像來創建容器
runoob@runoob:~$ docker run -t -i runoob/centos:6.7 /bin/bash [root@41c28d18b5fb /]# id runoob uid=500(runoob) gid=500(runoob) groups=500(runoob)從上面看到新鏡像已經包含我們創建的用戶runoob
設置鏡像標簽
我們可以使用 docker tag 命令,為鏡像添加一個新的標簽。
runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:devdocker tag 鏡像ID,這里是 860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標簽名(tag)。
使用 docker images 命令可以看到,ID為860c279d2fec的鏡像多一個標簽。
runoob@runoob:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/centos 6.7 860c279d2fec 5 hours ago 190.6 MB runoob/centos dev 860c279d2fec 5 hours ago 190.6 MB runoob/ubuntu v2 70bf1840fd7c 22 hours ago 158.5 MB ubuntu 14.04 90d5884b1ee0 6 days ago 188 MB php 5.6 f40e9e0f10c8 10 days ago 444.8 MB nginx latest 6f8d099c3adc 13 days ago 182.7 MB mysql 5.6 f2e8d6c772c0 3 weeks ago 324.6 MB httpd latest 02ef73cf1bc0 3 weeks ago 194.4 MB ubuntu 15.10 4e3b13c8a266 5 weeks ago 136.3 MB hello-world latest 690ed74de00f 6 months ago 960 B centos 6.7 d95b5ca17cc3 6 months ago 190.6 MB training/webapp latest 6fae60ef3446 12 months ago 348.8 MB五 進入鏡像
1 啟動docker某個image(鏡像)的container(容器)
Docker的鏡像稱為image,容器稱為container。
對于Docker來說,image是靜態的,類似于操作系統快照,而container則是動態的,是image的運行實例。
比如,有一個image名稱為ubuntu,那么比如現在我們啟動這個image的container并且進入到這個container的bash命令行中:
docker run -t -i ubuntu /bin/bash官網是這么說的:
- docker run: runs a container.
- ubuntu: is the image you would like to run.
- -t: flag assigns a pseudo-tty or terminal inside the new container.
- -i: flag allows you to make an interactive connection by grabbing the standard in (STDIN) of the container.
- /bin/bash: launches a Bash shell inside our container.
轉載于:https://www.cnblogs.com/lovestart/p/11273313.html
總結
以上是生活随笔為你收集整理的springboot10(docker)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老板:再用Log4j就收拾东西回家吧!
- 下一篇: 都啥年代了,求你别再说Redis是单线程