安裝一些必要的系統工具:
yum install -y yum-utils device-mapper-persistent-data lvm2
添加軟件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
?
更新 yum 緩存:
yum makecache fast
安裝 Docker-ce:
yum -y install docker-ce
啟動 Docker 后臺服務
systemctl start docker
測試運行 hello-world ?
docker run hello-world
?
Centos 6
yum install -y epel-release
yum install -y docker-io
安裝后的配置文件
vim /etc/sysconfig/docker
建議阿里云的 ?網易的很渣
啟動Docker 后臺服務
service docker start
幫助命令 ?
?? ?docker versiondocker infodocker --help
鏡像命令
?? ?docker images?
===========================================================================================
[root@instance-g0n0qkxg ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
my 2.2 a29a4de376a1 8 hours ago 355 MB
httpd latest c5b682398748 47 hours ago 131.6 MB
tomcat latest 36b736745f36 5 days ago 462.6 MB
nginx latest fc6a3f930cfd 5 days ago 109.1 MB
centos latest ea4b646d9000 12 days ago 200.4 MB
?? ?//列出本地的鏡像
?? ?docker search httpd
?? ?查找鏡像 ?? ?我們可以從 Docker Hub 網站來搜索鏡像,Docker Hub 網址為: https://hub.docker.com/ ?? ?我們也可以使用
docker search ====================================================================================[root@instance-g0n0qkxg ~]# docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementa... 2094 [OK]
tomee Apache TomEE is an all-Apache Java EE cert... 58 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba... 49 [OK]
davidcaste/alpine-tomcat Apache Tomcat 7/8 using Oracle Java 7/8 wi... 31 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 25 [OK]
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 16 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
tutum/tomcat Base docker image to run a Tomcat applicat... 11
meirwa/spring-boot-tomcat-mysql-app a sample spring-boot app using tomcat and ... 10 [OK]
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 8 [OK]
jeanblanchard/tomcat Minimal Docker image with Apache Tomcat 8
rightctrl/tomcat CentOS , Oracle Java, tomcat application s... 3 [OK]
maluuba/tomcat7-java8 Tomcat7 with java8. 3
amd64/tomcat Apache Tomcat is an open source implementa... 2
arm64v8/tomcat Apache Tomcat is an open source implementa... 2
camptocamp/tomcat-logback Docker image for tomcat with logback integ... 1 [OK]
jelastic/tomcat An image of the Tomcat Java application se... 1
99taxis/tomcat7 Tomcat7 1 [OK]
fabric8/tomcat-8 Fabric8 Tomcat 8 Image 1 [OK]
primetoninc/tomcat Apache tomcat 8.5, 8.0, 7.0 1 [OK]
s390x/tomcat Apache Tomcat is an open source implementa... 0
picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAG... 0 [OK]
cfje/tomcat-resource Tomcat Concourse Resource 0
swisstopo/service-print-tomcat backend tomcat for service-print "the true... 0
oobsri/tomcat8 Testing CI Jobs with different names. 0
[root@instance-g0n0qkxg ~]#
? 命令來搜索鏡像。比如我們需要一個httpd的鏡像來作為我們的web服務。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。 ?? ?拖取鏡像 ?? ?我們決定使用上圖中的httpd 官方版本的鏡像,使用命令 docker pull 來下載鏡像。 ?? ?
docker pull httpd
==========================================================================================
[root@instance-g0n0qkxg ~]# docker pull httpd
latest: Pulling from httpd
e1ca9fd53bbf: Pull complete
22c70239aff1: Pull complete
f634d7bb8607: Pull complete
e7db50fc1859: Pull complete
fe431389154b: Pull complete
b83c35b1a736: Pull complete
70fefe5f4885: Pull complete
eed4d080e85e: Pull complete
4576c2187d10: Pull complete
980f93c41065: Pull complete
c5b682398748: Pull complete
c5b682398748: Pulling fs layer
2557373f5bdd: Already exists
7905a4b7e832: Already exists
65384c160d5c: Already exists
Digest: sha256:58688906e168cacde8f56e8266c0f88a59d693cb21f6689e2ed2b93e20665a32
Status: Downloaded newer image for httpd:latest
?? ?刪除 鏡像 ?
? ?docker rmi 31f82d53ced4
?
?? ? 容器 ??docker啟動的容器列表
?docker -ps?
?? ?交互式 ?? ??? ?運行 ?? ???
?docker run -it centos?
?? ??? ?在交互式中兩種退出? ?? ??? ??? ?命令:exit 容器停止退出 ?? ??? ??? ?按鍵 CTRL+P+Q 容器不停止但是退出交互式 ?? ?后臺: ?? ??? ?運行 ??
??? ?docker run -d centos
?? ??? ??? ?**docker容器后臺運行,就必須有一個前臺進程 容器運行的明亮如果不是那些一直掛起的命令, top tail 就是會自動退出 ?? ??? ??? ? ?? ?容器日志 ?? ?
?? ?docker logs -f -t --tail 容器ID
?? ??? ??? ?-f 跟隨最新的日志打印 ?? ??? ??? ?-t 是加入時間戳 ?? ??? ??? ?-- tail 數字 顯示最后幾行 ?? ? ?? ?查看容器內運行的進程
?? ??? ?docker top 容器ID
?? ? ?? ?查看容器內部細節 ?? ??
? ?docker inspect 容器ID
?? ??? ??? ?json格式的容器細節 ?? ? ?? ?進入正在運行的容器并以命令行交互 ?
? ??? ?docker exec -it 容器ID bashShell(就是命令)
?? ??? ??? ?在容器中執行的命令 并不進入容器 ?? ??? ??? ?也可以進入容器中 ?? ??? ??? ?是在容器中打開新的終端,并且可以啟動新的進程 ?? ??? ?重新進入
docker attach 容器ID
?? ??? ??? ?直接進入容器啟動命令的終端 ?? ??? ??? ? ?? ?從容器內拷貝文件到主機中 ??
??? ?docker cp 容器ID:/temp/123.txt /root
?拷貝容器中/temp/123.txt 到宿主機的/root中 ?? ??? ??? ?也可以反向操作
?
docker 鏡像原理: ?? ??? ??? ? ?? ??? ? ?? ?容器 ??自定義端口運行
?docker run -p 8080:8080 tomcat
? 隨機端口運行
?? ?docker run -P tomcat
?? ?隨機 ?? ?創建新的鏡像
?? ?docker commit -a 'stevezong' -m='info' 容器ID 新的Image名稱:version
?? ?后臺運行 ?? ?加上 -d
?? ??? ? docker 容器數據卷 卷就是目錄或者文件 存在于一個或多個容器中,由docker 掛在到容器 單不屬于聯合文件系統 能過繞過 union file system 提供一些用于持續存儲或共享鼠鍵的特性 ?? ?卷的設計目的就是數據的持久化 完全獨立于容器的生存周期, docker 不會在容器刪除是刪除其掛在的數據卷 ?? ?數據共享 數據持久化 ?? ??? ?數據卷可以在容器之間共享或重用數據 ?? ??? ?卷中的更改可以直接生效 ?? ??? ?數據卷中的更改不會包含在鏡像的更新中 ?? ??? ?數據卷的生命周期一直持續到沒有容器使用它為止 ?? ?數據卷的添加 兩種 ?? ??? ?直接命令添加 ?? ??? ?
?? ?docker run -it -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名
?? ??? ??? ?查看是否成功 ?? ??
? ??? ?docker inspect
?? ??? ??? ??? ?json 有一個 volumes ?? ??? ??? ?容器和宿主機 數據共享 ?? ??? ??? ?容器亭子退出后 主機修改后數據會同步 ?? ??? ??? ?加權限 ?? ??? ?
?? ?docker run -it -v /宿主機絕對路徑:/容器內目錄:ro 鏡像名 只讀
?? ??? ?DockerFile 添加 ?? ??? ??? ?根目錄 新建mydocker 文件夾并進入 ?? ???
cd /?
mkdir ?mydocker
?? ??? ??? ?可以再Dockerfile中使用VOLUME指令來給鏡像添加一個后者多個數據卷 ?? ??? ??? ?File構建 ?? ??? ??? ?build后生成鏡像, 獲得一個新鏡像 ?? ??? ??? ?run 容器ID ?? ?數據卷容器 ?? ??? ?容器間傳遞共享 ??
??? ?--volumes-fromdocker ?run ?-it --name dc01 centosdocker run ?-it --name dc02 --volumes-from dc01 centos
?? ??? ?容器之間配置信息的傳遞,數據卷的生命周期一直持續到沒有容器使用它為止 ?? ?
docker file ?? ?DockerFile 是用來構建Docker鏡像的構建文件 是由一系列命令和參數構成的腳本 ?? ??? ?手動編寫一個dockerfile文件當然 必須要符合file的規范 ?? ??? ?有這個文件后直接dockerbuild 命令執行 獲取一個自定義的鏡像 ?? ??? ?run ?? ? ?? ?Centos的 docker file
?? ??? ?FROM scratch ?## scratch 是所有鏡像的父類 類似java中Object類MAINTAINER The CentOS Project <cloud-ops@centos.org> # 作者 郵箱ADD c68-docker.tar.xz / #LABEL name="CentOS Base Image" ?vendor="CentOS" ?license="GPLv2" ?build-date="2016-06-02" #標簽 說明# Default commandCMD ["/bin/bash"]
?? ? ?? ?docker file的解析過程 ?? ??? ?每條保留字指令必須為大寫字母且后面要跟隨至少一個參數 ?? ??? ?指令按照從上到下 順序執行 ?? ??? ?#表示注釋 ?? ??? ?每條指令都會創建一個新的鏡像層,并對鏡像進行提交 ?? ??? ? ?? ??? ? ?? ??? ?docker 從基礎鏡像運行一個容器 ?? ??? ?執行一條指令并對容器做出修改 ?? ??? ?執行類似docker commit的操作提交一個新的鏡像層 ?? ??? ?docker 再基于剛提交的鏡像運行一個新容器 ?? ??? ?執行dockerfile中的下一條指令知道所有指令都執行完成 ?? ??? ? ?? ??? ? ?? ?從應用軟件的角度來看Dokcerffile ?docker鏡像 Docker容器分別 代表軟件的三個不同階段 ?? ??? ?Dockerfile是軟件的原材料 ?? ??? ?Docker鏡像是軟件的交付品 ?? ??? ?DOcker容器則可以認為是軟件的運行態 ?? ??? ?Dockerfile面向開發Docker 鏡像成為交付標準 Docker 容器則設計部署域運維 三者和1? ?? ??? ? ?? ?Dockerfile 需要定義個Dockerfile DOckerfile 定義了進程需要的一切東西Dockerfile 設計的內容包括執行代碼或者是文件 環境變量 依賴包?? ?運行時環境動態鏈接庫 操作系統的發行版服務進程和內核進程 ?? ?當應用進程需要和系統服務和內核進程打交道這是需要考慮 如何設計namespace的權限控制 ?? ? ?? ?Docker鏡像 在用Dockerfile 定義一個文件之后 docke build 時會產出一個Docker 鏡像 當運行Docker鏡像時 會真正開始提供服務 ?? ? ?? ?Docker 容器容器是直接提供服務的 ?? ??? ? DockerFIle 保留字指令 ?? ?FROM? ?? ??? ?基礎鏡像 當前新鏡像是基于那個鏡像的 ?? ?MAINTAINER ?? ??? ?鏡像的作者和郵箱 ?? ?RUN ?? ??? ?容器 構建是需要運行的命令 ?? ?EXPOSE ?? ??? ?當前容器對外暴露的端口 ?? ?WORKDIR ?? ??? ?指定在創建容器后 終端默認登陸的進來的工作目錄 ?? ?ENV ?? ??? ?用來在構建鏡像過程中設置環境變量 ?? ?ADD ?? ??? ?將宿主機目錄下的文件拷貝到鏡像且ADD 命令會自動處理URL和解壓tar壓縮包 ?? ??? ?ADD比COPY強大 是拷貝+解壓縮 ?? ?COPY ?? ??? ?類似ADD 拷貝文件和目錄到鏡像中 ?? ??? ?將從狗醬上下文目錄中原路徑的文件/目錄復制到新的一層的鏡像內的目標路徑的位置 ?? ?VOLUME ?? ??? ?容器數據卷,用于數據保存和持久化工作 ?? ?CMD ?? ??? ?指定一個容器啟動時要運行的命令 ?? ??? ?Dockerfile中可以有多個CMD指令,但是只有最后一個生效CMD 會被docker run 之后的參數替換 ?? ?ENTRYPOINT ?? ??? ?指定一個容器啟動時要運行的命令 ?? ??? ?ENTRYPOINT的目的和CMD一樣,都是在指定容器啟動程序及參數,但是他是追加 并不是替換 ?? ?ONBUILD ?? ??? ?當狗醬一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發 ?? ??? ? ?? ??? ? ?? ? ?? ??? ? ?? ??? ? ?? ? ?? ?Base鏡像(scratch) ?? ??? ?Docker Hub 中的99%的鏡像都是通過在base鏡像中安裝和配置選喲的軟件構建出來的 ?? ?編寫Dockerfile ?? ??? ? ??
??? FROM centosMAINTAINER stevezong<zong_xuan@126.com>ENV WORKDIRPATH /usr/localWORKDIR $WORKDIRPATHRUN yum -y install vimEXPOSE 80CMD echo "build"CMD echo "success......Ok"CMD /bin/bash
?? ?構建 ?? ??
? ? docker build -f Dockerfile目錄 -t 新鏡像名字:TAG .docker build -f /mydocker/Dokcerfile -t my:2.2 .
?? ?? ??? ?
?? ?[root@instance-g0n0qkxg mydocker]# docker build -f /mydocker/Dokcerfile -t my:2.2 .Sending build context to Docker daemon 2.048 kBSending build context to Docker daemon?Step 0 : FROM centos---> ea4b646d9000Step 1 : MAINTAINER stevezong<zong_xuan@126.com>---> Using cache---> f20d26899816Step 2 : ENV WORKDIRPATH /usr/local---> Using cache---> e0e11157531dStep 3 : WORKDIR $WORKDIRPATH---> Using cache---> 0975ec751fe3Step 4 : RUN yum -y install vim---> Using cache---> 8873f1888215Step 5 : EXPOSE 80---> Running in 2c22c6e10801---> ddc073313f44Removing intermediate container 2c22c6e10801Step 6 : CMD echo "build"---> Running in d16f4a16b34e---> 49f0a8ec4179Removing intermediate container d16f4a16b34eStep 7 : CMD echo "success......Ok"---> Running in 934d81015ccb---> 0e04109c9689Removing intermediate container 934d81015ccbStep 8 : CMD /bin/bash---> Running in 35f80b803e1e---> a29a4de376a1Removing intermediate container 35f80b803e1eSuccessfully built a29a4de376a1[root@instance-g0n0qkxg mydocker]#?
?? ?運行新建的鏡像 ?? ???
?docker run -it my:2.2
?? ??? ? ?? ?列出鏡像的變更歷史
?? ??? ?docker history a29a4de376a1[root@instance-g0n0qkxg mydocker]# docker imagesREPOSITORY ? ? ? ? ?TAG ? ? ? ? ? ? ? ? IMAGE ID ? ? ? ? ? ?CREATED ? ? ? ? ? ? VIRTUAL SIZEmy ? ? ? ? ? ? ? ? ?2.2 ? ? ? ? ? ? ? ? a29a4de376a1 ? ? ? ?3 minutes ago ? ? ? 355 MBtomcat ? ? ? ? ? ? ?latest ? ? ? ? ? ? ?36b736745f36 ? ? ? ?4 days ago ? ? ? ? ?462.6 MBnginx ? ? ? ? ? ? ? latest ? ? ? ? ? ? ?fc6a3f930cfd ? ? ? ?5 days ago ? ? ? ? ?109.1 MBcentos ? ? ? ? ? ? ?latest ? ? ? ? ? ? ?ea4b646d9000 ? ? ? ?11 days ago ? ? ? ? 200.4 MB[root@instance-g0n0qkxg mydocker]# docker history a29a4de376a1IMAGE ? ? ? ? ? ? ? CREATED ? ? ? ? ? ? CREATED BY ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SIZE ? ? ? ? ? ? ? ?COMMENTa29a4de376a1 ? ? ? ?3 minutes ago ? ? ? /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin/b ? 0 B ? ? ? ? ? ? ? ??0e04109c9689 ? ? ? ?3 minutes ago ? ? ? /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo \ ? 0 B ? ? ? ? ? ? ? ??49f0a8ec4179 ? ? ? ?3 minutes ago ? ? ? /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo \ ? 0 B ? ? ? ? ? ? ? ??ddc073313f44 ? ? ? ?3 minutes ago ? ? ? /bin/sh -c #(nop) EXPOSE 80/tcp ? ? ? ? ? ? ? ? 0 B ? ? ? ? ? ? ? ??8873f1888215 ? ? ? ?4 minutes ago ? ? ? /bin/sh -c yum -y install vim ? ? ? ? ? ? ? ? ? 154.6 MB ? ? ? ? ? ?0975ec751fe3 ? ? ? ?5 minutes ago ? ? ? /bin/sh -c #(nop) WORKDIR /usr/local ? ? ? ? ? ?0 B ? ? ? ? ? ? ? ??e0e11157531d ? ? ? ?5 minutes ago ? ? ? /bin/sh -c #(nop) ENV WORKDIRPATH=/usr/local ? ?0 B ? ? ? ? ? ? ? ??f20d26899816 ? ? ? ?5 minutes ago ? ? ? /bin/sh -c #(nop) MAINTAINER stevezong<zong_x ? 0 B ? ? ? ? ? ? ? ??ea4b646d9000 ? ? ? ?11 days ago ? ? ? ? /bin/sh -c #(nop) ?CMD ["/bin/bash"] ? ? ? ? ? ?0 B ? ? ? ? ? ? ? ??eb72e5beea78 ? ? ? ?11 days ago ? ? ? ? /bin/sh -c #(nop) ?LABEL org.label-schema.sch ? 0 B ? ? ? ? ? ? ? ??3993223e10aa ? ? ? ?11 days ago ? ? ? ? /bin/sh -c #(nop) ADD file:fbe9badfd2790f0747 ? 200.4 MB ? ? ? ? ? ?
?? ??? ? ?? ??? ? ?? ??? ? 備注: 批量刪除當前正在運行的
?docker rm -f $(docker ps -q)?? ?
?
總結
以上是生活随笔 為你收集整理的Docker 初级使用 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。