1, 内存与cup限制
详情:https://www.cnblogs.com/zhuochong/p/9728383.html
1.1:docker 运行指定内存
| 选项 | 描述 |
|---|---|
| -m,–memory | 内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M |
| –memory-swap | 内存+交换分区大小总限制。格式同上。必须必-m设置的大 |
| –memory-reservation | 内存的软性限制。格式同上 |
| –oom-kill-disable | 是否阻止 OOM killer 杀死容器,默认没设置 |
| –oom-score-adj | 容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0 |
| –memory-swappiness | 用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数 |
| –kernel-memory | 核心内存限制。格式同上,最小为 4M |
1.2:CPU限制
| 选项 | 描述 |
|---|---|
| –cpuset-cpus="" | 允许使用的 CPU 集,值可以为 0-3,0,1 |
| -c,–cpu-shares=0 | CPU 共享权值(相对权重) |
| cpu-period=0 | 限制 CPU CFS 的周期,范围从 100ms~1s,即[1000, 1000000] |
| –cpu-quota=0 | 限制 CPU CFS 配额,必须不小于1ms,即 >= 1000 |
| –cpuset-mems="" | 允许在上执行的内存节点(MEMs),只对 NUMA 系统有效 |
2:开启docker远程访问
为了镜像直接打包放入docker,需关闭防火墙或放开docke端口
放开端口命令为:firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload
2.1:修改文件
打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行。
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
2.2:重启生效
systemctl daemon-reload
systemctl restart docker.service
2.3:测试是否生效
curl http://127.0.0.1:2375/info
3:maven中集成docker
3.1:添加Dockerfile文件(该文件没有后缀)

3.2:Dockerfile文件
示例:

3.2.1:FROM livingobjects/jre8
指Docker Hub上官方提供的java镜像,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用,docker的一大方便也在于此,只要在from中配置需要的基础应用,它就会默认给你已安装上。
3.2.2:VOLUME /tmp
创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录。
3.2.3:ADD iacs-alarm-0.0.1-SNAPSHOT.jar app.jar
将应用jar包复制到/app.jar
3.2.4:ENTRYPOINT
表示容器运行后默认执行的命令
3.3:pom.xml文件修改
3.3.1:需打成jar包

3.3.2:标签内容
示例:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.14</version>
<configuration>
<imageName>${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<dockerHost>http://192.168.3.227:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
3.3.2.1:
镜像名称
3.3.2.2:< dockerHost >
指定 Docker Remote API 的远程访问地址
3.4:单个发布镜像
docker:build

4:Compose
Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
docker-compose默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。
其它大部分指令都跟 docker run 中的类似。
如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
4.1:linux安装compose
有两种方式
4.1.1:从github上下载docker-compose二进制文件安装
4.1.1.1:下载最新版的docker-compose文件
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
4.1.1.2:添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
4.1.2:pip安装
4.1.2.1:安装python-pip
yum -y install epel-release
yum -y install python-pip
4.1.2.2:安装docker-compose
pip install docker-compose
4.1.3:测试安装结果
docker-compose –version
4.2: Compose 基本上分为三步
4.2.1:Dockerfile 定义应用的运行环境
同3.2配置
4.2.2:docker-compose.yml 定义组成应用的各服务
一份标准配置文件应该包含 version、services、networks 三大部分,其中最关键的就是 services 和 networks 两个部分
示例:

| 选项 | 描述 |
|---|---|
| version | Compose目前为止有三个版本分别为Version 1,Version 2,Version 3,Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1没有声明版本默认是"version 1"。Version 1将来会被弃用。 |
| services | 多个容器集合 |
| build | 配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数 |
| image | 指定服务所使用的镜像 |
| ports | 对外暴露的端口定义,和 expose 对应 |
| links | 将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况 |
| entrypoint | 用于指定接入点。在docker-compose.yml中可以定义接入点,覆盖Dockerfile中的定义 |
| command | 覆盖容器启动后默认执行的命令 |
| environment | 环境变量配置,可以用数组或字典两种方式 |
| volumes | 卷挂载路径 |
4.2.3:docker-compose up 启动整个应用
将yml文件放到服务器上,在该目录执行
docker-compose up –d
(启动容器,如果镜像不存在则先下载镜像,如果容器没创建则创建容器,如果容器没启动则启动)
4.2.4:其他
docker-compose down
停止并移除容器
docker-compose restart
重启服务
5:安装docker
1:查看内核
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
uname -r
2:更新yum
sudo yum update
3:卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
4:安装软件包
yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5:设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6:选择版本
可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7:安装docker
sudo yum install docker-ce 或者sudo yum install # 例如:sudo yum install docker-ce-17.12.0.ce
8:查看版本(验证是否安装成功)
docker version
9:启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
6:docker操作
6.1:查看日志
6.1.1:直接查看容器运行日志
docker logs -f -t --tail 行数 容器名
如: docker logs -f -t --tail 200 124f093ed1d2
6.1.2:可将容器目录挂载到服务器上
6.2:进入docker容器目录
docker exec -it 容器ID /bin/bash
3万+

被折叠的 条评论
为什么被折叠?



