安装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:
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- \
#设置时区,docker中默认使用UTC时间
&& echo "Asia/Shanghai" > /etc/timezone \
&& rm /etc/localtime \
#重新配置tzdata软件包,使得时区设置生效
&& dpkg-reconfigure -f noninteractive tzdata #指定维护者信息,可不写
MAINTAINER yehx @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
#容器启动后需要执行的命令
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 hours ago 660MB -
运行镜像
#-p 8181:8181指定端口映射,让外部也可以访问这些应用,如果不用-p,可以通过--network host,将container与宿主机的网络相连通
#--name指定运行后的容器名称
#-ddocker run -d -p : --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…" hours ago Up hours 0.0.0.0:->/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]