微軟為Xbox20歲生日釋出紀念款手柄/耳機/服飾
“什麼是Docker“?,”為什麼要使用Docker”?
官方定義:
Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用及依賴到一個可移植的容器中,然後釋出到任何流行的Linux機器或Windows機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面;
通俗解釋:
一款產品從開發到上線,到作業系統,到執行環境,再到應用配置,我們需要關注很多東西,這是大多數網際網路不得不面對的問題,特別是版本的迭代,不同版本環境的相容等等;Docker給出了一個標準化的解決方案,“從搬家,到搬樓”,即之前我們配置一個應用的執行環境,要安裝很多軟體,如:Java/Tomcat/Mysql/Jdbc驅動等等,安裝配置麻煩,而且不能跨平臺,換個伺服器還要重新配置以便,移植性差,而Docker做到了“一次構建,處處執行”,將這些配置完的軟體生成映象,在別的伺服器上直接呼叫即可,不需要重新去配置;
Docker核心概念:
docker主機(Host):安裝了docker程式的機器(docker直接安裝在作業系統之上的);
docker客戶端(Client):連線docker主機進行操作的程式;
docker倉庫(Registry):用來儲存各種打包好的軟體映象;
docker映象(Images):軟體打包好的映象,放在docker倉庫中;
docker容器(Container):映象啟動後的例項稱為一個容器;容器是一個獨立執行的一個或一組應用;
Docker安裝:
在Linux作業系統上安裝docker,本人是通過虛擬機器來完成的,涉及到的虛擬機器的安裝,本文中不做說明。
1.檢查Linux核心版本(docker安裝要求核心版本是3.10及以上)
[root@localhost /]# uname -r
3.10.0-1160.el7.x86_64
[root@localhost /]#
2.安裝docker(CentOS7和CentOS8安裝的結果好像是不一樣的,此處以CentOS7來說明)
yum install docker
3.安裝完成之後,可通過下面命令來操作
#啟動docker [root@localhost /]# systemctl start docker #檢視docker版本 [root@localhost /]# docker -v Docker version 1.13.1, build 7d71120/1.13.1 #檢視docker狀態 [root@localhost /]# 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 二 2021-10-19 18:01:03 CST; 20s ago Docs: http://docs.docker.com Main PID: 4984 (dockerd-current) Tasks: 17 Memory: 22.5M CGroup: /system.slice/docker.service ├─4984 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver... └─4989 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /... 10月 19 18:01:01 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:01.764522960+08:00" level=info msg="libcontainerd: new containerd process, pid: 4989" 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.169740757+08:00" level=info msg="Graph migration to content-addressabili...seconds" 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.171913151+08:00" level=info msg="Loading containers: start." 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.187520490+08:00" level=info msg="Firewalld running: false" 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.363977682+08:00" level=info msg="Default bridge (docker0) is assigned wi...address" 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.765296618+08:00" level=info msg="Loading containers: done." 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.862231739+08:00" level=info msg="Daemon has completed initialization" 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.862256098+08:00" level=info msg="Docker daemon" commit="7d71120/1.13.1" ...n=1.13.1 10月 19 18:01:03 localhost.localdomain dockerd-current[4984]: time="2021-10-19T18:01:03.882963717+08:00" level=info msg="API listen on /var/run/docker.sock" 10月 19 18:01:03 localhost.localdomain systemd[1]: Started Docker Application Container Engine. Hint: Some lines were ellipsized, use -l to show in full. #停止docker [root@localhost /]# systemctl stop docker [root@localhost /]#
Docker常用的操作命令
1)、映象操作命令
①檢索映象檔案命令:docker search 關鍵字
[root@localhost /]# docker search tomcat
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/tomcat Apache Tomcat is an open source implementa... 3152 [OK]
docker.io docker.io/tomee Apache TomEE is an all-Apache Java EE cert... 93 [OK]
docker.io docker.io/dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba... 58 [OK]
docker.io docker.io/consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 18 [OK]
docker.io docker.io/cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
docker.io docker.io/aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 13 [OK]
docker.io docker.io/arm32v7/tomcat Apache Tomcat is an open source implementa... 11
docker.io docker.io/andreptb/tomcat Debian Jessie based image with Apache Tomc... 10 [OK]
docker.io docker.io/rightctrl/tomcat CentOS , Oracle Java, tomcat application s... 7 [OK]
docker.io docker.io/arm64v8/tomcat Apache Tomcat is an open source implementa... 6
docker.io docker.io/unidata/tomcat-docker Security-hardened Tomcat Docker container. 5 [OK]
docker.io docker.io/amd64/tomcat Apache Tomcat is an open source implementa... 3
docker.io docker.io/cfje/tomcat-resource Tomcat Concourse Resource 2
docker.io docker.io/fabric8/tomcat-8 Fabric8 Tomcat 8 Image 2 [OK]
docker.io docker.io/jelastic/tomcat An image of the Tomcat Java application se... 2
docker.io docker.io/oobsri/tomcat8 Testing CI Jobs with different names. 2
docker.io docker.io/99taxis/tomcat7 Tomcat7 1 [OK]
docker.io docker.io/camptocamp/tomcat-logback Docker image for tomcat with logback integ... 1 [OK]
docker.io docker.io/chenyufeng/tomcat-centos tomcat基於centos6的映象 1 [OK]
docker.io docker.io/i386/tomcat Apache Tomcat is an open source implementa... 1
docker.io docker.io/picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAG... 1 [OK]
docker.io docker.io/ppc64le/tomcat Apache Tomcat is an open source implementa... 1
docker.io docker.io/s390x/tomcat Apache Tomcat is an open source implementa... 0
docker.io docker.io/secoresearch/tomcat-varnish Tomcat and Varnish 5.0 0 [OK]
docker.io docker.io/softwareplant/tomcat Tomcat images for jira-cloud testing 0 [OK]
[root@localhost /]#
②拉取映象命令:docker pull 映象名:tag
[root@localhost /]# docker pull tomcat
Using default tag: latest #預設不寫tag標籤時,拉取的就是最新版
Trying to pull repository docker.io/library/tomcat ...
latest: Pulling from docker.io/library/tomcat
bb7d5a84853b: Pull complete
f02b617c6a8c: Pull complete
d32e17419b7e: Pull complete
c9d2d81226a4: Pull complete
fab4960f9cd2: Pull complete
da1c1e7baf6d: Pull complete
79b231561270: Pull complete
7d337880d8b4: Pull complete
2df65a31be06: Pull complete
10cbf519de23: Pull complete
Digest: sha256:7c30d3c92b191ec2b84f64be99326f9c83a4a4e079c899ee4d0a9a41abca8406
Status: Downloaded newer image for docker.io/tomcat:latest
[root@localhost /]#
③檢視下載的所有映象檔案:docker images
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql latest ecac195d15af 12 hours ago 516 MB
docker.io/tomcat latest 4ce9babdd885 5 days ago 680 MB
[root@localhost /]#
④刪除下載的映象檔案:docker rmi 映象名/映象ID
[root@localhost /]# docker rmi redis
Untagged: redis:latest
Untagged: docker.io/redis@sha256:a89cb097693dd354de598d279c304a1c73ee550fbfff6d9ee515568e0c749cfe
Deleted: sha256:7faaec68323851b2265bddb239bd9476c7d4e4335e9fd88cbfcc1df374dded2f
Deleted: sha256:e6deb90762475cda72e21895911f830ed99fd1cc6d920d92873270be91235274
Deleted: sha256:2649acad13241d9c8d81e49357bc66cce459b352ded7f423d70ede7bd3bb7b89
Deleted: sha256:64007bba5fc220df4d3da33cecdc2d55dd6a73528c138b0fa1acd79fd6a9c217
Deleted: sha256:b2cc2f1bf8b1cca8ba7c19e1697f7b73755903ad8f880b83673fd6a697aca935
Deleted: sha256:fbd1283ab782925be4d990bd4bebe9ad5e5cf9a525abfb6fa87465e072da9d31
Deleted: sha256:e8b689711f21f9301c40bf2131ce1a1905c3aa09def1de5ec43cf0adf652576e
[root@localhost /]#
2)、容器操作命令
①根據映象啟動容器: docker run
[root@localhost /]# docker run --name tomcat -d -p 8888:8080 tomcat
2a52a81aa35b0a030096a9ea8b81c91ef7edb8f931f2654581c5c9655f544734
[root@localhost /]#
●--name 容器自定義名稱
● -d 後臺執行
● -p 埠對映
注意:容器建立之後可以停止執行的容器,但是下次啟動的時候可以通過start來啟動,除非容器刪除了才通過run來啟動
②檢視容器命令: docker ps
#檢視執行中的容器
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a52a81aa35b tomcat "catalina.sh run" 8 minutes ago Up 8 minutes 0.0.0.0:8888->8080/tcp tomcat
#檢視所有的容器(包括執行中的和已經停止的)
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a52a81aa35b tomcat "catalina.sh run" 8 minutes ago Up 8 minutes 0.0.0.0:8888->8080/tcp tomcat
[root@localhost /]#
③停止執行中的容器:docker stop 容器名/容器ID
[root@localhost /]# docker stop tomcat
tomcat
[root@localhost /]#
④刪除容器: docker rm 容器名/容器ID
[root@localhost /]# docker rm tomcat
tomcat
[root@localhost /]#
⑤檢視容器日誌:docker logs 容器名/容器ID
[root@localhost /]# docker logs tomcat
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
19-Oct-2021 10:29:37.143 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/10.0.12
19-Oct-2021 10:29:37.146 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Sep 28 2021 13:34:21 UTC
19-Oct-2021 10:29:37.162 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.0.12.0
19-Oct-2021 10:29:37.162 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
19-Oct-2021 10:29:37.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 3.10.0-1160.el7.x86_64
19-Oct-2021 10:29:37.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
19-Oct-2021 10:29:37.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/openjdk-11
19-Oct-2021 10:29:37.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.12+7
19-Oct-2021 10:29:37.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
19-Oct-2021 10:29:37.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
19-Oct-2021 10:29:37.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
19-Oct-2021 10:29:37.200 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
19-Oct-2021 10:29:37.200 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
19-Oct-2021 10:29:37.201 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
19-Oct-2021 10:29:37.201 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
19-Oct-2021 10:29:37.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
19-Oct-2021 10:29:37.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
19-Oct-2021 10:29:37.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
19-Oct-2021 10:29:37.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
19-Oct-2021 10:29:37.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
19-Oct-2021 10:29:37.202 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
19-Oct-2021 10:29:37.203 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
19-Oct-2021 10:29:37.203 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
19-Oct-2021 10:29:37.203 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
19-Oct-2021 10:29:37.204 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
19-Oct-2021 10:29:37.222 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].
19-Oct-2021 10:29:37.222 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
19-Oct-2021 10:29:37.231 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021]
19-Oct-2021 10:29:38.652 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
19-Oct-2021 10:29:38.749 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [2379] milliseconds
19-Oct-2021 10:29:38.963 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
19-Oct-2021 10:29:38.963 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.12]
19-Oct-2021 10:29:38.999 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
19-Oct-2021 10:29:39.037 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [288] milliseconds
[root@localhost /]#