Docker_基础运用

1 docker的好处

开箱即用;快速部署;可移植性强;环境隔离

2 docker的常用命令

查看系统存在的镜像

docker images

网络搜索镜像(镜像名称组成 repository:tag)

docker search 镜像名称

拉取镜像下载到本地(镜像名称组成 repository:tag)

docker pull 镜像名称

删除镜像(-f 强制删除)

docker rmi -f 镜像id

运行 (-d 表示守护进程,后台运行; -p表示端口映射,后面表示容器端口,前面表示物理机端口,物理机端口不能重复)(镜像名称组成 repository:tag)

当镜像在本地不存在时,该命令会自动从网络上拉取镜像到本地

docker run -d  -p  物理机端口:容器端口 镜像名称 --name "指定的容器名称"

查看当前运行的容器

docker ps

查看容器内部信息

docker inspect 容器名称或者容器id

停止容器

docker stop 容器名称或者容器id

启动容器

docker start 容器名名称

访问:访问的时候还是按照物理机配置的端口访问。

3 上传镜像到仓库

存储镜像的仓库分为私有和公有。

1) 上传公有的镜像。

在阿里云上创建镜像仓库(https://www.alibabacloud.com/help/zh/doc-detail/63591.htm)

通过界面创建仓库的时候会有选择,点击公有

在本地服务器上登录在阿里云上创建的仓库,需要密码(教程阿里云官网有手册)

然后打版本,上传

docker tag 镜像id 仓库地址:[镜像版本号]
docker push 镜像id 仓库地址:[镜像版本号] 

直接拉取镜像

2) 上传私有的镜像。

在阿里云上创建镜像仓库(https://www.alibabacloud.com/help/zh/doc-detail/63591.htm)

通过界面创建仓库的时候会有选择,点击私有

在本地服务器上登录在阿里云上创建的仓库,需要密码(教程阿里云官网有手册)

然后打版本,上传

docker tag 仓库地址:[镜像版本号]
docker push 仓库地址:[镜像版本号] 

在本地服务器上登录在阿里云上创建的仓库,需要密码(教程阿里云官网有手册),然后拉取镜像

4 自动化部署镜像jenkins(持续构建  制作镜像->拉取镜像->运行)

5 使用Maven构建Docker镜像

使用docker的maven插件构建springboot应用

docker的maven插件可以将springboot打包成镜像,所以将一个应用制作为镜像有很多方式,这是docker的功能,我们可以在IDEA中引入docker的maven插件的方式直接打包为镜像,也可以直接将非docker的maven打包之后的项目放在linux上,用docker进行命令制作镜像。

官网介绍如下

https://spring.io/guides/gs/spring-boot-docker/

1) 简单添加一个springboot应用

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DockerDemoApplication {

    @RequestMapping
    public String home() {
        return "Hello Docker World";
    }

    public static void main(String[] args) {
        SpringApplication.run(DockerDemoApplication.class, args);
    }

}

2)  转到localhost:8080以查看您的“Hello Docker World”消息。

3)  create a Dockerfile in our Spring Boot project

dockerfile是一系列命令和参数构成的脚本,这些命令应用于基本镜像,最终创建一个新的镜像。

在项目的根目录下创建一个Dockerfile 文件,右键项目,点击创建。

输入以下内容

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

from 命令:需要一个基础镜像,即openjdk,版本是8-jdk-alpine(springboot的应用的启动需要最基础的java环境)

volume命令:持久化dcker的工作目录打/tmp目录下

arg命令:加入的是我们打包后的jar包,即对应pom文件中的写的jar_file标签。

copy:将本地文件复制到docker容器

entrypoint: 容器启动时需要的命令

具体的其他参数可百度dockerfile查看其他参数。

3 ) 添加maven的配置

<properties>
   <docker.image.prefix>sunru</docker.image.prefix>
</properties>
<build>    <finalName>demon_docker</finalName>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>        </plugin>        <plugin>            <groupId>com.spotify</groupId>            <artifactId>dockerfile-maven-plugin</artifactId>            <version>1.4.9</version>            <configuration>                <repository>${docker.image.prefix}/${project.artifactId}</repository>                <buildArgs>                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>                </buildArgs>            </configuration>        </plugin>    </plugins></build>

4) 构建镜像

执行 mvn install dockerfile:build

需要本地有docker环境,否则会构建失败。

然后通过3 上传镜像到仓库进行镜像上传

原文地址:https://www.cnblogs.com/S-Mustard/p/11373311.html

时间: 2024-08-04 04:26:24

Docker_基础运用的相关文章

docker_基础_DockerFile

1.利用 dockerfile 定制镜像 ??镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题.镜像构建透明性的问题.体积的问题就都会解决.这个脚本就是Dockerfile?? Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 配置第一个dockerfile文件 $ m

docker_基础_4_监控

接上篇12-20 21.监控 21.1.使用InfluxDB+cAdvisor+Grafana配置Docker监控   cAdvisor: Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker主机.更多详细操作和配置选项可以查看Github上的cAdvisor项目文档.  influxDB: 它是一个分布式时间序列数据库.cAdvisor仅仅显示实时信息,但是不存储监视数据.因

docker_基础_2

接上篇 [上篇文件](http://blog.51cto.com/xiong51/2093556) 8.数据管理 docker数据持久化,数据共享,容器数据管理操作 数据卷(Volumes):容器内数据直接映射到本地主机环境数据卷容器 (Bind mounts):使用特定容器维护数据卷 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:数据卷 可以在容器之间共享和重用对 数据卷 的修改会立马生效对 数据卷 的更新,不会影响镜像数据卷 默认会一直存在,即使容器

docker_基础_3

接上篇 第8-11章 12.基本架构 ?? 早期的docker是基于已经成熟的LXC(linux container)技术实现的.自0.9版本起,docker已经逐渐从LXC转移到新的libcontainer上,并且积极推动开放容器规范runc:?? 从OS功能上看,目前Docker底层依赖的核心技术主要包括linux操作系统的命名空间(name space), 控制组( cgroup ),联合文件系统( union file system 或 aufs )和linux网络虚拟化支持. ?? d

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

Java注解(1)-注解基础

注解(Annotation)是在JAVA5中开始引入的,它为在代码中添加信息提供了一种新的方式.注解在一定程度上把元数据与源代码文件结合在一起,正如许多成熟的框架(Spring)所做的那样.那么,注解到底可以做什么呢? 1.注解的作用. 提供用来完整地描述程序所需要的信息,如编译期校验程序信息. 生成描述符文件,或生成新类的定义. 减轻编写"样板"代码(配置文件)的负担,可以使用注解自动生成. 更加干净易读的代码. 编译期类型检查. 2.Java提供的注解 Java5内置了一些原生的注

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

NumPy基础:数组和失量计算

NumPy : Numerical Python,是高性能科学计算和数据分析的基础包. 部分功能: ndarray:一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组: 用于对整组数据进行快速运算的标准数学函数(无需编写循环): 用于读写磁盘数据的工具以及用于操作内存映射文件的工具: 线性代数.随机数生成以及傅里叶变换功能: 用于集成C.C++.Fortran等语言编写的代码工具: 大部分数据分析应用关注的功能: 用于