1、docker概述php
2、docker的核心概念及安裝方式linux
3、docker容器操做nginx
4、docker資源控制web
5、docker數據庫管理spring
1.是一種輕量級的「虛擬機」
2.在Linux容器裏運行應用的開源工具docker
參考案例指導文檔表1-1shell
1.打包應用程序簡化部署
2.可脫離底層硬件任意遷移
3.例:服務器從騰訊雲遷移到阿里雲數據庫
1.鏡像
2.容器
3.倉庫(共有,私有)json
1.使用CURL得到Docker的安裝腳本進行安裝
2.使用YUM倉庫來安裝Dockercentos
[root@localhost ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y [root@localhost ~]# yum-config-manager --add-repo [root@localhost ~]# ls /etc/yum.repos.d/CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo docker-ce.repo#此時會顯示docker的鏡像源 [root@localhost ~]# yum install -y docker-ce [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# systemctl start docker.service [root@localhost ~]# systemctl enable docker.service [root@localhost ~]# docker search nginx #搜索nginx鏡像 NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 12375 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1704 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 749 [OK] linuxserver/nginx An Nginx container, brought to you by LinuxS… 84 ......如下省略多項#顯示出的倉庫中的鏡像按星級進行排名,星級越高,下載人數越多,天然就越靠譜 [root@localhost ~]# docker pull nginx#此時咱們不使用加速進行下載 Using default tag: latest latest: Pulling from library/nginx 000eee12ec04: Downloading 3.083MB/27.09MB eb22865337de: Downloading 1.703MB/23.74MB bee5d581ef8b: Download complete #此時速度會很是慢,有時候甚至會出現卡頓 #咱們能夠在此處作一個優化操做就是:鏡像加速`此命令能夠在阿里雲的官網上搜索「官方鏡像加速」從而獲取到本身的命令代碼(須要先註冊阿里雲平臺的帳號)` `找到控制檯,登錄後找到左側的「產品與服務」,再找到「容器鏡像服務」,再找到左側的「鏡像加速器」,在「操做文檔」中選擇本身的系統,此處咱們須要選擇「CentOS」,就能夠找到本身帳號生成的鏡像加速配置文件` [root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://w1ogxqvl.mirror.aliyuncs.com"] } EOF [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart docker [root@localhost ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx 000eee12ec04: Pull complete eb22865337de: Pull complete bee5d581ef8b: Pull complete Digest: sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest #此時很快就能夠下載完成了 [root@localhost ~]# docker images #查看下載下來的鏡像 REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 231d40e811cd 4 weeks ago 126MB
docker create [選項]鏡像運行的程序
-i讓容器的標準輸入保持打開
-t 讓Docker分配一個僞終端
docker ps [選項]
-a列出最近一次啓動的容器
docker start容器的ID/名稱
docker run [選項]鏡像運行的程序執行的命令
-d在後臺進行運行
docker stop容器的ID/名稱
docker e
xec [選項]容器的ID/名稱/bin/bash
docker export容器的ID/名稱>文件名
cat文件名| docker import -生成的鏡像名稱:標籤
docker rm [選項]容器的ID/名稱
[root@localhost ~]# docker inspect 231d40e811cd #查看鏡像信息 [ { "Id": "sha256:231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145", "RepoTags": [ "nginx:latest" ], "RepoDigests": [ ......如下省略多行 [root@localhost ~]# docker tag nginx:latest nginx:web #從新定義標籤 [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 231d40e811cd 4 weeks ago 126MB nginx web 231d40e811cd 4 weeks ago 126MB [root@localhost ~]# docker images | grep nginx nginx latest 231d40e811cd 4 weeks ago 126MB nginx web 231d40e811cd 4 weeks ago 126MB #刪除鏡像 [root@localhost ~]# docker rmi nginx:web Untagged: nginx:web [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 231d40e811cd 4 weeks ago 126MB #存出鏡像 [root@localhost ~]# cd /opt/ [root@localhost opt]# lscontainerd rh [root@localhost opt]# docker save -o nginx nginx:latest [root@localhost opt]# lscontainerd nginx rh [root@localhost opt]# ls -lh 總用量 125M drwx--x--x. 4 root root 28 12月 24 11:01 containerd -rw-------. 1 root root 125M 12月 24 11:17 nginx drwxr-xr-x. 2 root root 6 3月 26 2015 rh
[root@localhost ~]# docker images #此時Docker鏡像是空的 REPOSITORY TAG IMAGE ID CREATED SIZE
[root@localhost opt]# scp /opt/nginx root@192.168.18.145:/opt/ The authenticity of host '192.168.18.145 (192.168.18.145)' can't be established. ECDSA key fingerprint is SHA256:mTT+FEtzAu4X3D5srZlz93S3gye8MzbqVZFDzfJd4Gk. ECDSA key fingerprint is MD5:fa:5a:88:23:49:60:9b:b8:7e:4b:14:4b:3f:cd:96:a0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.18.145' (ECDSA) to the list of known hosts. root@192.168.18.145's password: nginx 100% 124MB 124.0MB/s 00:01
[root@localhost ~]# cd /opt/ [root@localhost opt]# ls containerd nginx rh [root@localhost opt]# docker load < nginx #導入過程 831c5620387f: Loading layer 72.48MB/72.48MB 5fb987d2e54d: Loading layer 57.67MB/57.67MB 4fc1aa8003a3: Loading layer 3.584kB/3.584kB Loaded image: nginx:latest [root@localhost opt]# docker images #查看鏡像 REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 231d40e811cd 4 weeks ago 126MB
[root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost opt]# docker create -it nginx:latest /bin/bash #容器建立82013604d57b7e0cbad870b367ca241579581a3c34d977aec58157a89fe9188e [root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82013604d57b nginx:latest "/bin/bash" 18 seconds ago Created laughing_robinson [root@localhost opt]# docker start 82013604d57b #啓動 82013604d57b [root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82013604d57b nginx:latest "/bin/bash" 2 minutes ago Up 20 seconds 80/tcp laughing_robinson #此時狀態爲up,端口爲80 [root@localhost opt]# docker search centos7 [root@localhost opt]# docker pull paigeeworld/centos7 [root@localhost opt]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 231d40e811cd 4 weeks ago 126MB paigeeworld/centos7 latest 4cbe7aa905e7 5 years ago 382MB [root@localhost opt]# docker create -it paigeeworld/centos7/bin/bash fe74e5e0e354e855f76b2edc043358c71f9a2e99d10ac3875c610e1fd9dac4d7 [root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe74e5e0e354 paigeeworld/centos7 "/bin/bash" 8 seconds ago Created trusting_satoshi #此時只是Created建立好的狀態 [root@localhost opt]# docker start fe74e5e0e354 #啓動 fe74e5e0e354 [root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe74e5e0e354 paigeeworld/centos7 "/bin/bash" About a minute ago Up 11 seconds trusting_satoshi 82013604d57b nginx:latest "/bin/bash" 8 minutes ago Up 6 minutes 80/tcp laughing_robinson #此時是Up開啓的狀態
[root@localhost opt]# docker run paigeeworld/centos7 /usr/bin/bash -c ls / #查看鏡像根目錄下有哪些文件bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d04961e9862f paigeeworld/centos7 "/usr/bin/bash -c ls…" About a minute ago Exited (0) About a minute ago frosty_pare #docker run = 鏡像作了create而後start,再進入到容器中執行了ls,最後執行了stop
#進入容器[root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d04961e9862f paigeeworld/centos7 "/usr/bin/bash -c ls…" 15 minutes ago Exited (0) 15 minutes ago frosty_pare fe74e5e0e354 paigeeworld/centos7 "/bin/bash" 22 minutes ago Up 21 minutes trusting_satoshi 82013604d57b nginx:latest "/bin/bash" 30 minutes ago Up 28 minutes 80/tcp laughing_robinson [root@localhost opt]# docker exec -it fe74e5e0e354 /bin/bash #選擇運行的容器進入環境 bash-4.2# ls /bin dev home lib64 media opt root sbin sys usr boot etc lib lost+found mnt proc run srv tmp var bash-4.2# exit exit #終止運行 [root@localhost opt]# docker stop fe74e5e0e354 #中止 fe74e5e0e354 [root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe74e5e0e354 paigeeworld/centos7 "/bin/bash" 25 minutes ago Exited (137) 4 seconds ago trusting_satoshi #此時狀態爲退出
1.經過--cpu-quota選項來限制CPU的使用率
2.經過修改配置文件cpu.cfs_quota_us實現
docker run --cpu-shares 1024容器A
docker run --cpu-shares 1024容器B
docker run --cpu-shares 2048容器C
[root@localhost ~]# docker run --cpu-quota 20000 nginx:latest #該容器在電腦中所佔資源只有20%,若是沒有設置它就會對別的資源進行搶佔 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e1e8a4aef629 nginx:latest "nginx -g 'daemon of…" 5 seconds ago Up 4 seconds 80/tcp strange_dubinsky #此時會顯示一個新的進程(須要新開一個終端進行查看) [root@localhost ~]# cd /sys/fs/cgroup/cpu/docker/ [root@localhost docker]# ls cgroup.procs cpu.shares cpuacct.stat cpu.stat cpuacct.usage e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67 #此時會在配置文件的目錄下找到以’e1e8a4aef629’開頭的配置文件 [root@localhost docker]# cd e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67 [root@localhost e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67]# ls cgroup.clone_children cpuacct.usage cpu.rt_period_us notify_on_release cgroup.event_control cpuacct.usage_percpu cpu.rt_runtime_us tasks cgroup.procs cpu.cfs_period_us cpu.shares cpuacct.stat cpu.cfs_quota_us cpu.stat [root@localhost e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67]# cat cpu.cfs_quota_us #此quota文件能夠設置上限值20000
[root@localhost docker]# docker pull paigeeworld/centos7 #須要再下載一個cento7的鏡像 [root@localhost docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 231d40e811cd 4 weeks ago 126MB paigeeworld/centos7 latest 4cbe7aa905e7 5 years ago 382MB `建立兩個容器爲c1和c2,若只有這兩個容器,設置容器的權重,使得c1和c2的CPU資源佔比爲33.3%和66.7%` [root@localhost docker]# docker run -itd --name cl --cpu-shares 512 paigeeworld/centos7ab596821561386ec6519652606b79b363e548f29ad2c289480f7a577e8f5803b [root@localhost docker]# docker run -itd --name c2 --cpu-shares 1024 paigeeworld/centos7462562fbf8ba7614328c3afde41bcc466dd329fbfe79317b5ec0e6e5cefde71d [root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 462562fbf8ba paigeeworld/centos7 "/bin/bash" 35 seconds ago Up 34 seconds c2 ab5968215613 paigeeworld/centos7 "/bin/bash" 36 seconds ago Up 36 seconds cl#此時就會產生cl和c2兩個新的容器了,分別佔用1/3和2/3
[root@localhost docker]# docker run --name c3 --cpuset-cpus 0,1 paigeeworld/centos7 #此時可使用到兩個核心數資源
[root@localhost docker]# docker run --name c4 -m 512m paigeeworld/centos7 [root@localhost docker]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 580c4e066308 paigeeworld/centos7 "/bin/bash" 3 seconds ago Exited (0) 2 seconds ago c4
--device-read-bps:限制讀某個設備的bps(數據量) [root@localhost dev]# docker run -d --device-read-bps /dev/sda:30mb paigeeworld/centos7627b05085a2305f5e2ef5a3725458e25b85441c8e400402f72f562fb71813ab1 --device-write-bps:限制寫入某個設備的bps(數據量) 例:docker run -d --device-write-bps /dev/sda:30mb paigeeworld/centos7 --device-read-iops:限制讀某個設備的iops (次數) --device-write-iops:限制寫入某個設備的iops (次數)
1.方便查看容器內產生的數據
2.多容器間實現數據共享
1.數據卷
2.數據卷容器
數據卷:直接在centos上添加,可實現數據共享,實現的是宿主和容器之間的數據共享
數據卷容器:容器之間實現共享,和宿主機沒有關係,A容器中的a目錄與B容器上的d目錄實現數據共享
docker run -d -v /data1 -v /data2 --name web
httpd:centos
docker run -d -v /var/www:/data1 --name web-1
httpd:centos
docker run -it --volumes-from web --name db1httpd:centos /bin/bash