Docker快速入门使用指南教程
定义和用处
- 定义
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
- 用处
- 隔离性
- 轻便,便于维护管理
- 弹性,同时起用多个
- 可复用镜像
概念
-
镜像
**Docker 把应用程序及其依赖,打包在 image 文件里面。**只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
-
镜像仓库
存储镜像的仓库,类似于Maven仓库。可在本地服务器部署镜像仓库,也可使用阿里云或官方仓库。
-
容器
**image 文件生成的容器实例,本身也是一个文件,称为容器文件。**关闭容器并不会删除容器文件,只是容器停止运行而已。
-
Dockerfile
Dockerfile是一个文本文件,里面编写多条命令,这些命令描述了一个镜像构建的细节。Docker 根据 该文件生成二进制的 image 文件。
安装和配置
-
centos7安装
yum install -y docker
-
配置镜像仓库
打开 /etc/docker/daemon.json,插入以下数据
{ "registry-mirrors": ["你的镜像地址(https://c6n8vys4.mirror.aliyuncs.com)"] }
使用命令
-
拉取镜像
docker pull redis:3.0
-
查询镜像
docker search redis
-
上传镜像
docker push redis:3.0
-
删除镜像
docker rmi redis:3.0
-
制作springboot jar镜像
-
编写Dockerfile文件(参看Dockerfile 指令详解)
FROM jdk:alpine-jdk8 VOLUME /tmp ADD app.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
-
maven 打springboot的jar
-
将Dockerfile文件和jar放在linux同一目录,执行以下命令(其中-d代表名字 . 代表当前目录)
docker build -d myApp:1.0 .
-
-
创建并启用容器(其中-d代表后台运行,–name postgres96代表容器名字,-p 5433:5432代表宿主机端口为5433,容器内端口为5432,–network testnet代表使用桥连接中testnet的网络,–network-alias postgres96代表在testnet网络中的别名为postgres96,同样在该网络中的容器,可通过域名为postgres96来访问该容器)
docker run -d --name postgres96 -p 5433:5432 --network testnet --network-alias postgres96 postgres:9.6.11
-
启用容器
docker start postgres96
-
停止容器
docker stop postgres96
-
删除容器
docker rm postgres96
-
创建网络(参看Docker容器互访三种方式)
docker network create testnet
-
springboot 的日志挂载数据卷
- 日志配置文件中目录为 /logs/app
- docker 启动镜像时加上 -v /usr/local/app/logs:/logs/app
docker run -d -v /usr/local/logs/app:/logs/app --name myApp -p 8081:8080 --network testnet myApp:1.0
-
进入容器
docker exec -it redis /bin/bash
网络模式
Docker网络模式 | 配置 | 说明 |
---|---|---|
host模式 | –net=host | 容器和宿主机共享Network namespace。 |
container模式 | –net=container:NAME_or_ID | 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。 |
none模式 | –net=none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。 |
bridge模式 | –net=bridge | (默认为该模式),容器互访可使用同一网桥或创建连接 |
上一篇: Visual Studio使用笔记