Docker必备知识整理
Docker簡介
????????Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
????? ? Docker是用Go語言編寫的。Docker也是一個命令行工具,它提供了中央“docker”執行過程中所需的所有工具。
????? ? Docker本身需要運行在Linux系統上,因此,如果我們的系統是windows或者MacOS系統,那么我們需要下載一個DockerToolbox,這個安裝程序提供了兩種使用docker的工具:Kitematic (Alpha)和Docker Quickstart Terminal(前者是圖形化docker后者是docker命令行)以及一個實現虛擬化的Oracle VM VirtualBox,它可以在我們第一次打開terminal的時候為我們創建一個Linux虛擬機,名字叫做default。我們也稱之為“docker機器”。
????? ? image是docker鏡像。docker中的重要概念。在docker鏡像服務方面,有一個官方網站dockerhub,我們可以在其上找到一些別人已經做好的可執行鏡像文件:centos,Ubuntu等。國內如阿里云也提供類似服務,且訪問速度較快?;趇mage我們可以創建(沙箱環境)container,來運行我們的image。
docker常用命令
為docker鏡像創建并運行一個container(容器):docker run 鏡像名稱(一個鏡像我們可以創建運行多個容器)
在terminal搜索dockerhub上相關images,如:docker search centos
(dockerhub提供一些官方版本鏡像,因此在搜索列表中,我們可以看到OFFICIAL為[OK]代表此鏡像是官方提供的版本)
下載dockerhub上的云端鏡像:docker pull 鏡像名稱
(在dockerhub上下載鏡像會非常慢,我們可以使用國內如阿里云提供的鏡像管理服務)
查看本地鏡像:docker images
查詢正在運行的容器:docker ps
查詢所有容器:docker ps --all ? (簡寫是:docker ps -a)
輸出鏡像中的目錄列表:docker run 鏡像名稱 ls
創建容器的時候指定名字:docker run --name 名字 鏡像名稱
查看最近一次創建的容器:docker ps --all --latest
查看容器的日志:docker logs 容器名稱
停止運行中的容器:docker stop 容器名稱
刪除容器:docker rm 容器ID
重啟容器:docker restart 容器名稱
運行容器:docker start 容器名稱
創建一個帶交互的容器,比如登錄到容器中:docker run --ineteractive --tty centos /bin/bash
(--interactive意思是創建一個交互容器,簡寫:-i ? ;
--tty意思是為容器創建一個終端,簡寫:-t ?;
終端位置是:/bin/bash)
創建一個后臺運行的容器,如實現centos系統鏡像容器長時間執行ping操作:
docker run --detach centos ping www.baidu.com ? ? (--detach意思是此容器為后臺運行容器,簡寫:-d)
(docker 會返回一個完整的容器id,我們可以查看正在運行的容器,以及查看容器的log來監察容器運行狀態)
docker實用技巧
加速器服務配置
使用阿里云加速器提升國內獲取Docker官方鏡像的速度
第一步:打開阿里云加速器
登錄阿里云賬號,并以此查找 控制臺-->云計算基礎服務-->容器鏡像服務-->鏡像加速器,并打開對應操作系統的標簽:
第二步:創建新的docker machine
在創建升級版docker machine之前需要刪除我們之前默認創建的docker機器:
而后,再去創建新的docker機器:
創建一臺安裝有Docker環境的Linux虛擬機,指定機器名為default,同時配置Docker加速器地址。
?
docker-machine create --engine-registry-mirror=https://31u25vtb.mirror.aliyuncs.com -d virtualbox default直接復制上面這行命令,粘貼到terminal中,并回車。(注意:每個阿里云用戶都會有一個專屬的加速地址,需要自行更換加速地址,即 https://31u25vtb.mirror.aliyuncs.com)
第三步:配置docker machine
查看機器的環境配置,并配置到本地,并通過docker 客戶端訪問Docker服務。
docker-machine env default eval "$(docker-machine env default)" docker info逐條復制,并在terminal中執行。
綜上三步,已經設置好了阿里云加速服務,這次再通過pull命令下載官方鏡像,就會快許多。
Dockerfile創建自定義image鏡像
我們可以通過Dockerfile文件來將程序jar包制作成docker image文件,上傳到阿里云或者在本地運行。
第一步:創建一個用于生成images的文件夾,將Dockerfile文件至于其中
文件夾參考目錄結構如下圖所示:
其中,start.sh腳本文件如下:
#!/bin/bash nohup java -jar -Dserver.port=8888 app.jar >./log.out 2>&1 & tail -f /dev/nullDockerfile文件如下:
FROM centosMAINTAINER yan.li@ahav.com.cn ENV APPHOME /apphome RUN mkdir $APPHOME WORKDIR $APPHOME COPY jdk8 $APPHOME/jdk8 ADD app.jar $APPHOME/app.jar ADD start.sh $APPHOME/ ENV JAVA_HOME=$APPHOME/jdk8/jre ENV CLASSPATH=.:$JAVA_HOME/lib \PATH=$JAVA_HOME/bin:$PATH EXPOSE 8888 RUN chmod 777 -R $APPHOME CMD /bin/bash -c $APPHOME/start.sh第二步:使用Docker命令行工具生成docker鏡像
docker build -t secosecurity:0.1.2 .注意:最后面有一個點,secosecurity為生成的鏡像名稱
通過docker images指令可以查看新生成的名叫“secosecurity”的images鏡像。
Docker命令行push鏡像到阿里云
首先,網頁登陸阿里云
在已經創建好的registry中找到push信息:
在docker命令行中依次執行紅框內三條語句即可。
?
總結
以上是生活随笔為你收集整理的Docker必备知识整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot————应用启动时
- 下一篇: Mybatis源码分析第一天------