安裝docker
1. 建立倉庫
-
移除已安裝的docker(docker以前被稱為docker或者docker-enginer現在稱為docker-ce)
apt-get remove docker docker-engine docker.io docker-ce rm -rf /var/lib/docker/ rm -rf /etc/docker/
-
更新APT包
sudo apt-get update
-
安裝包以允許APT在HTTPS上使用存儲庫
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common
-
配置阿里雲的apt源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian \ $(lsb_release -cs) \ stable"
2. 安裝docker ce
-
更新APT包
sudo apt-get update
-
安裝最新的docker ce
sudo apt-get install docker-ce
-
如果需要安裝特定版本的docker ce
apt-cache madison docker-ce #查看可安裝版本 sudo apt-get install docker-ce=<VERSION_STRING> #替代值為第二列的版本號
3. 檢查docker安裝結果
-
查看docker狀態啟動結果,Active為active(running)狀態
systemctl status docker.service
-
可能出現安裝失敗,active狀態為stop,通過查看/var/log/daemon.log,日志:Error starting daemon: Error initializing network controller: list bridge addresses failed: no available network,解決方法:
apt-get install bridge-utils brctl addbr docker0 ifconfig docker0 192.168.2.1 echo 'DOCKER_OPTS="b=docker0"' >> /etc/default/docker
-
通過hello-world鏡像來驗證docker是否安裝成功,如果下圖所示即為安裝成功
docker run hello-world
制作簡易SpringBoot工程鏡像
1. 新建springboot工程
-
添加相關pom依賴后,創建HelloController便攜代碼:
@RestController public class HelloController { @GetMapping("/hello") @ResponseBody public String hello(String name) { return "Hello world!"; } }
-
pom中配置maven插件后,通過mvn命令導出jar,導出文件在工程的target目錄中:
mvn clean package
2. 制作鏡像
-
創建Dockerfile,最好是空目錄,注意文件大小寫
touch Dockerfile
#Dockerfile的內容 #指定基礎鏡像 FROM openjdk:8 RUN apt-get update \ #安裝基礎工具 && apt-get install -y --no-install-recommends locales net-tools iputils-ping curl wget telnet vim tzdata \ #設置語言環境 && locale-gen en_US.UTF-8 \ #設置時區,docker中默認使用UTC時間 && echo "Asia/Shanghai" > /etc/timezone \ && rm /etc/localtime \ #重新配置tzdata軟件包,使得時區設置生效 && dpkg-reconfigure -f noninteractive tzdata #指定維護者信息,可不寫 MAINTAINER yehx 582097515@qq.com #容器工作目錄,run -it進入docker后CD進入改目錄 WORKDIR /app #指定標簽信息,可不寫 LABEL app="springboot-helloworld" version="1.0" by="yehx" #COPY工程的jar文件,會自動解壓 ADD ../springboot-helloworld-1.0-SNAPSHOT.jar ./ #打開某個端口 EXPOSE 8181 #容器啟動后需要執行的命令 CMD java -jar springboot-helloworld-1.0-SNAPSHOT.jar
-
制作鏡像(最后. 代表當前路徑)
docker build -t springboot-helloworld:1.0 .
3. 檢查鏡像
-
查看鏡像,可以看到剛剛制作好的鏡像文件
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE springboot-helloworld 1.0 7484da556931 10 hours ago 660MB
-
運行鏡像
#-p 8181:8181指定端口映射,讓外部也可以訪問這些應用,如果不用-p,可以通過--network host,將container與宿主機的網絡相連通 #--name指定運行后的容器名稱 #-d
docker run -d -p 8181:8181 --name springboot-helloworld springboot-helloworld:1.0
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 833c1354f668 springboot-helloworld:1.0 "/bin/sh -c 'java -j…" 10 hours ago Up 10 hours 0.0.0.0:8181->8181/tcp springboot-helloworld
-
查看鏡像運行日志
docker logs -f 833c1354f668
-
訪問/hello接口

Docker Hub
目前Docker官方維護了一個公共倉庫叫Docker Hub,大部分需求都可以通過在Docker Hub中直接下載鏡像來實現,並可以上傳自己的鏡像文件。
1. 基本使用
- 注冊:在 https://cloud.docker.com 免費注冊一個 Docker 賬號
- 登錄:通過執行 docker login 命令交互式的輸入用戶名及密碼來完成在命令行界面登錄Docker Hub
-
查詢鏡像:通過 docker search 命令來查找官方倉庫中的鏡像

-
拉取鏡像:利用 docker pull 命令來將它下載到本地

-
推送鏡像:可以在登錄后通過 docker push 命令來將自己的鏡像推送到 Docker Hub
這邊需要注意的是,推送前需要通過docker tag命令將鏡像重新打標簽,如果Docker Hub的賬號用戶名為usernamme,則新鏡像名為username/[old-image]