>

在线安装docker工具,澳门博发娱乐官网4)  查看镜

- 编辑:澳门博发娱乐官网 -

在线安装docker工具,澳门博发娱乐官网4)  查看镜

docker 可以理解是运行Linux和Mac OS X上的轻量级虚拟机,他相对于VMWare,Virtual Box这类完整的虚拟机相比,占用资源少,大量重用宿主资源,而且可以编程创建. 而且可以统一开发,测试和发布环境,是运行基于Linux后台服务器的利器.

paas架构之Docker镜像管理

转载自
http://blog.csdn.net/forezp/article/details/70198649

Centos7系统Docker安装-配置-调试-应用

参考文章:https://www.tianmaying.com/tutorial/spring-boot-docker
http://tianmaying.com/tutorial/spring-boot-docker/repo

有三个重要概念

1. 镜像管理

一、docker简介

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 docker通常用于如下场景:

  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker 的优点

  • 1、简化程序:
    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

  • 2、避免选择恐惧症:
    如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

  • 3、节省开支:
    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

上面文字参考了相关文章;另,关于docker 的安装和基本的使用见相关教程。

第一章:准备在线安装

注:记录只是为了让自己找起来更加方便

  • 镜像
  • 容器(Container)
  • 仓库(Repository)

1.1. 列出镜像

Sudo docker images

澳门博发娱乐官网 1

二、准备工作

环境条件:

  • linux系统,不建议windows
  • docker最新版本
  • jdk 1.8
  • maven3.0

本文采用的工程来自第一篇文章的工程,采用maven的方式去构建项目,并采用docker-maven-plugin去构建docker镜像。

192.168.102.44,192.168.102.45,192.168.102.46分别执行” yuminstall docker-io

本文主要实现通过maven配置来完成Docker的构建
主要包括以下:
1.Dockerfile作用:用来构建镜像
参考如下
FROM java:8
VOLUME /tmp
ADD spring-boot-docker-0.1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
说明:
java:8是指Docker Hub上官方提供的java镜像
VOLUME /tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
ADD spring-boot-docker-0.1.0.jar app.jar 将应用jar包复制到/app.jar
ENTRYPOINT表示容器运行后默认执行的命令

理解了这三个概念,就理解了 Docker 的整个生命周期。

1.2. 查看镜像

Sudo docker images xxxx

澳门博发娱乐官网 2

三、改造工程、构建镜像

改造eureka-server工程

在pom文件加上插件:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- tag::plugin[] -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.3</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- end::plugin[] -->
        </plugins>
    </build>

Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。

  • imageName指定了镜像的名字,本例为 forep/eureka-server
  • dockerDirectory指定 Dockerfile 的位置
  • resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。

修改下配置文件:

server:
  port: 8761
eureka:
  instance:
    prefer-ip-address: true
  client:
    registerWithEureka: false
    fetchRegistry: false

编写dockerfile文件:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar

”命令,在线安装docker工具

构建命令:
docker build -t tmy/spring-boot-app .
运行Docker容器命令:
docker run -d -p 8080:8080 --name sample-app tmy/spring-boot-app

Docker 镜像

Docker 镜像就是一个只读的模板。镜像的定义文件取名为 Dockerfile. 类似于shell格式

1.3. 拉取镜像

Sudo docker pull Ubuntu

澳门博发娱乐官网 3

RUN bash -c 'touch /app.jar'

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8761

docker file编写指令:

  • FROM
    FROM <image>
    FROM <image>:<tag>
    FROM <image> <digest>

FROM指令必须指定且需要在Dockerfile其他指令的前面,指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。后续的指令都依赖于该指令指定的image。当在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。

  • VOLUME
    格式为:
     VOLUME ["/data"]

使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。

  • ADD
    从src目录复制文件到容器的dest。其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包

  • ENTRYPOINT
    指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效。

  • EXPOSE
    为Docker容器设置对外的端口号。在启动时,可以使用-p选项或者-P选项。
    构建镜像
    执行构建docker镜像maven命令:

mvn clean
mvn package docker:build

澳门博发娱乐官网 4

image.png

构建eureka-server镜像成功。
同理构建service-hi镜像

  • pom文件导入同eurek-server
  • 修改下配置文件:
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-server:8761/eureka/ # 这个需要改为eureka-server
server:
  port: 8763
spring:
  application:
    name: service-hi

在这里说下:defaultZone发现服务的host改为镜像名。

  • dockefile 编写同eureka-server

  • 构建镜像:

mvn clean
mvn package docker:build

澳门博发娱乐官网 5

image.png

这时我们运行docke的eureka-server 和service-hi镜像:

docker run -p 8761: 8761 -t forezp/eureka-server
docker run -p 8763: 8763 -t forezp/service-hi

访问localhost:8761

澳门博发娱乐官网 6

image.png

第二章:安装环境

2.使用maven创建镜像的配置文件POM
<properties>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.2.3</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
imageName指定了镜像的名字
dockerDirectory指定Dockerfile的位置
resources是指那些需要和Dockerfile放在一起,在构建镜像时使用的文件,一般应用jar包需要纳入

Docker 容器

Docker 利用容器来运行应用。

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

1.4. 查找镜像

Sudo docker search mysql

澳门博发娱乐官网 7

四、采用docker-compose启动镜像

Compose 是一个用于定义和运行多容器的Docker应用的工具。使用Compose,你可以在一个配置文件(yaml格式)中配置你应用的服务,然后使用一个命令,即可创建并启动配置中引用的所有服务。下面我们进入Compose的实战吧。

采用docker-compose的方式编排镜像,启动镜像:

version: '3'
services:
  eureka-server:
    image: forezp/eureka-server
    restart: always
    ports:
      - 8761:8761

  service-hi:
    image: forezp/service-hi
    restart: always
    ports:
      - 8763:8763

输入命令: docker-compose up

澳门博发娱乐官网 8

image.png

发现2个镜像按照指定的顺序启动了。

1.Linux虚拟机Centos 7.0,服务器CPU:i5 双核以上,内存:2G以上

命令:
mvn package docker:build

Docker 仓库

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签。

仓库分为公开仓库和私有仓库两种形式。

最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool 等,可以提供大陆用户更稳定快速的访问。

1.5. 删除镜像

sudo docker rmi xxxxx (force)

澳门博发娱乐官网 9

五、采用docker-compose编排并启动镜像

docker-compose也可以构建镜像,现在我们采用docker-compose的方式构建镜像。

现在以eureka-server为例:
将Dockerfile移到eureka-server的主目录,改写ADD的相对路径:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD ./target/eureka-server-0.0.1-SNAPSHOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8761

同理修改service-hi目录;

编写构建镜像docker-compose-dev文件:

version: '3'
services:
  eureka-server:
    build: eureka-server
    ports:
      - 8761:8761

  service-hi:
    build: service-hi
    ports:
      - 8763:8763

命令构建镜像并启动:

  • docker-compose -f docker-compose.yml -f docker-compose-dev.yml up

澳门博发娱乐官网 10

image.png

3.机器名 ip地址 安装软件

对应的工程目录如下:

发布形式

spring boot 为了简化开发,可以把应用,tomcat 服务统一打包在一个jar中,因此在Docker 发布spring boot 可以直接拷贝最终jar到docker中,另外一种方法把源码拷入docker 在,docker里面下载编译工具maven,jdk等自行编译,后面一种方法构建docker用时较长,每次都是重新下载相关jar依赖编译,不推荐.

因此我们假设已经在本机编译好jar,每拷入这个jar即可.

1.6. 构建镜像

test1         192.168.102.44

澳门博发娱乐官网 11

代码准备

用 IDEA或Eclipse 配置发布版有一点步骤,为了简单操作,我们直接采用maven 命令来编译一个简单的Spring boot项目.

程序的输出很简单,在浏览器访问docker 对应端口,输出一行提示,

我们手动构造一个简单项目

mkdir hello-docker ; cd hello-docker # 项目目录

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.bluedrum.springdemo</groupId> <artifactId>bluedrum-spring-boot-demo</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <docker.image.prefix>springio</docker.image.prefix> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <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.13</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build></project>

编辑源代码

mkdir -p src/main/java/cn/bluedrum/springdemo

package cn.bluedrum.springdemo;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.ResponseBody;@Controller@SpringBootApplicationpublic class SampleController { @ResponseBody @RequestMapping(value = "/") String home(){ return "Hello Docker World2"; } public static void main(String[] args) { SpringApplication.run(SampleController.class,"--server.port=8081"); }}

注意 "--server.port=8081",表示启动tomcat 端口是8081(而不是缺省的8080)

这里要安装maven,编译成jar

mvn package

本地测试,需要安装jdk运行:

java -jar target/bluedrum-spring-boot-demo-1.0-SNAPSHOT.jar

如果程序正确运行,浏览器访问 “Hello Docker World2” 字样

1.6.1. Docker commit

不推荐,建议使用docker build+ docker file

test2        192.168.114.45

图片.png

三.本地Docker 发布

Docker 标准推荐操作系统是 Ubuntu 64位,如 14.04 ,16.06版本. 其它的操作系统的需要使用置virtual box 虚拟机上的Ubuntu上运行Docker,

但 新的Docker 在Mac 下开发的一个 MacOS Hypervisor framework,相当于在其构造一个性能很高的专用虚拟机.

因此在你看这篇文章时,Mac OSX和Ubuntu 64均是标准的Docker 安装环境.

可以下载 Docker 社区版,安装

安装后会有一个图标出现在顶部

澳门博发娱乐官网 12image.png

所有配置均可用图形界面,为了提高docker image 下载速度,可以使用国内docker 加速网站,常见有

澳门博发娱乐官网 13image.png

1.6.2. Docker Build + Dockerfile

创建static_web目录

创建Dockerfile配置文件:

test3        192.168.114.46

构建本地docker 容器

首先要编辑Dockerfile 文件

FROM java:8EXPOSE 8081VOLUME /tmpADD bluedrum-spring-boot-demo-1.0-SNAPSHOT.jar app.jarRUN sh -c 'touch /app.jar'ENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

以下是解释FROM 表示本image是哪一个基础image继承而来, java:8是带有jdk8运行环境的image

EXPOSE 8081 表示本docker 要把本地8081进行映射,这个测试在mac下无所谓,但在阿里云这样docker 必须有这一句,否则映射会失败.

VOLUME /tmp VOLUME 指定了数据文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp ,这样做是因为docker 重启后所有数据丢失,持久数据保存在VOLUME指定目录下才会下次使用.

ADD表示把文件拷入docker ,并改名成 app.jar

ENTRYPOINT 表示docker 启动执行第一个指令,这里是调用java 启动 jar

  澳门博发娱乐官网 14

Build:

第三章:docker使用

命令行构建

构建容器方法有两种,一种是调用docker build 指令手动建在Dockerfile 所在目录执行如下指令(注意,这个jar必须和Dockerfile同一路径下)

docker build -t hxy .

build表示构建容器,. 表示构建文件在当前目录. -t 指明本容器的tag名字,方便调用.

这是一个成功调用,

docker build -t hxy .Sending build context to Docker daemon 63.43MBStep 1/7 : FROM java:8 ---> d23bdf5b1b1bStep 2/7 : EXPOSE 8081 ---> Using cache ---> af40c4f0bb64Step 3/7 : VOLUME /tmp ---> Using cache ---> 5a0abb6e6149Step 4/7 : ADD bluedrum-spring-boot-demo-1.0-SNAPSHOT.jar app.jar ---> 135b017b65bdStep 5/7 : RUN sh -c 'touch /app.jar' ---> Running in b3089dd7490aRemoving intermediate container b3089dd7490a ---> 472354c65e33Step 6/7 : ENV JAVA_OPTS="" ---> Running in 01cec8aeaaa9Removing intermediate container 01cec8aeaaa9 ---> fb2dd3c02514Step 7/7 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] ---> Running in c2a93f997776Removing intermediate container c2a93f997776 ---> de32f8f2ac97Successfully built de32f8f2ac97Successfully tagged hxy:latest

Successfully built de32f8f2ac97 这里指明image ID. 在后续的操作中用使用

以下表示启动指定image .

docker run de32f8f2ac97 -p 8081:8081

-p <本地端口>:<docker端口> 表示把docker 端口映射到本地端口来.

测试用 有输出即可

还有一种调用是用tag调用,不指定话默认用最新那个

docker run -t hxy -p 8081:8081

docker stop 484b1a9b8a49 #用docker ps 查看docker stop -t hxy

  澳门博发娱乐官网 15

1、启动docker及查看服务

maven插件构建

这里也可采用maven插件docker-maven-plugin 调docker 命令,优点是编译完后自动构建,并且有推送到远程仓库功能

这里关键是在pom.xml有其申明,其中dockerDirectory 是指明Dockerfile所在目录,

 <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>.</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration>

执行命令,这里执行编译,并枸造docker 实例

mvn package docker:build

查看所有运行实例

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES484b1a9b8a49 de32f8f2ac97 "sh -c 'java $JAVA_O…" 2 minutes ago Up 2 minutes 8081/tcp angry_visvesvarayac54ede741112 springio/bluedrum-spring-boot-demo "sh -c 'java $JAVA_O…" 2 days ago Up 2 days 0.0.0.0:8081->8081/tcp agitated_swirles

这里第一列 CONTAINER ID 即可容器ID,后续各项操作均要用到此IDPORTS是用来判断网络映射状态, 如果为空,表示完全没有网络映射,如网络出问题,没有侦听服务

如果为 8081/tcp 形式表示,只在docker 启动了端口侦听,但没有映出来,因此外部是无法访问的.

0.0.0.0:8081->8081/tcp 只有这样形式,表示外部的8081端口,映射到内部端口,这样才是正常工作

查看所有image

REPOSITORY TAG IMAGE ID CREATED SIZEhxy latest de32f8f2ac97 About an hour ago 685MBspringio/bluedrum-spring-boot-demo latest 7df85e003c92 2 days ago 695MBdocker-demo latest af850b972103 2 days ago 669MB<none> <none> da7283718e15 2 days ago 669MB<none> <none> 381c4e1fa40c 3 days ago 653MB<none> <none> 3ef8dca1797a 3 days ago 674MBhub.c.163.com/wuxukun/maven-aliyun 3-jdk-8 676639454cb4 15 months ago 653MBjava 8 d23bdf5b1b1b 16 months ago 

注意这里的size 表示占用空间大小,所以本地docker 如果不用,尽量删掉

有时我们想连接docker 内部的虚拟机进行各种命令来分析测试,

docker exec -ti <CONTAINER ID> bash

以下是一个例, -t 表示attach 到某个容器上,i 表示交互模式,本句完整意思在某个容器上以交互模式执行bash ,相当进入控制台.

docker exec -ti 36976f3c166b bashroot@36976f3c166b:/# uname -aLinux 36976f3c166b 4.9.87-linuxkit-aufs #1 SMP Wed Mar 14 15:12:16 UTC 2018 x86_64 GNU/Linuxroot@36976f3c166b:/# cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 42model name : Intel Core i7-2720QM CPU @ 2.20GHz

docker rm <容器ID>注意正在运行容器,需要用 docker stop 后才能删除

docker rmi <image ID>

在阿里云,我们采用ubuntu 64bit .有两种方法来运行容器,一种还是象本地操作来传统的命令行,另外一种采用阿里云的容器服务,后面相当于用网页来图形式操作,并且有日志/监控等运维界面.

本文中仍然采用命令行来运行. 以便适合主题快速入门.

1.6.3. 从git仓库构建镜像

1)  git创建dockerfile

输入文件内容:

# vesion: 0.0.1

FROM ubuntu:14.04

MAINTAINER Jay Zhan "[email protected]"

RUN apt-get install -y nginx

RUN echo 'Hi, I am in you container' > /usr/share/nginx/html/index.html

EXPOSE 8090

澳门博发娱乐官网 16

2)  获取github中dockerfile文件的raw链接

简写

3)  使用该链接build

sudo docker build -t="jay/web_from_git"

澳门博发娱乐官网 17

澳门博发娱乐官网 18

4)  查看镜像

澳门博发娱乐官网 19

5) 缓存镜像

Docker的每一次构建都会缓存一个本地的镜像,所以从哪一步出错,就进入前镜像输入该命令即可知道什么问题;

如果构建过程都是一样的,将采用同一个镜像

澳门博发娱乐官网 20

如果不想使用缓存,比如apt-get update命令,将不会刷新apt包缓存,这时候需要不使用缓存

sudo docker build –no-cache -t="jay/web_from_git" .

6)  从镜像启动容器

sudo docker run -i -t -p 10080:80 --name static_web2 jay/static_web nginx -g "daemon off;"

使用宿主机的10080端口映射虚拟机的80端口

查看宿主机的10080端口效果:

澳门博发娱乐官网 21

澳门博发娱乐官网 22

和我们nginx的index.html的输出内容一致

7)  将镜像推送到docker hub

报错:unauthorized: access to the requested resource is not authorized

解决:需要使用docker login先登陆

澳门博发娱乐官网 23

只能上传到docker hub账户对应的仓库(docker hub 账户/xxxxxx),不可以上传到root仓库(xxxxx),

澳门博发娱乐官网 24

澳门博发娱乐官网 25

澳门博发娱乐官网 26

去docker hub账户查看仓库:

澳门博发娱乐官网 27

启动docker命令: service docker start

安装docker

用apt安装 docker 的版本太低

apt-get install docker.io

版本为1.6

阿里云建议采用 dokcer ce版.用如下命令安装,版本较新

curl -fsSL | bash -s docker --mirror Aliyun

uname -a116~14.04.1-Ubuntu SMP Mon Aug 14 16:07:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linuxdocker --versionDocker version 18.05.0-ce, build f150324

新版的docker 配置放在/etc/docker/daemon.json

{ "bip": "192.168.1.5/24", "debug": true, "registry-mirrors": ["https://fzxn****.mirror.aliyuncs.com"]}

--bip 指定docker 的虚拟网卡的ip地址, 缺省的网卡地址 172.18.xxx.xxx 而阿里云内网网卡也是172.19 网段,这两个很容易冲突,造成映射失败.

"registry-mirrors" 是阿里云docker 加速网址,可到阿里云控制台申请,

service docker start

Dockerfile ,jar 各种文件用 scp 上传到阿里云服务器

还是用 docker build/run 进行构建,跟本地是一样的

首先用本地测试 用 curl如果有输出即表示成功

curl Docker World2

外网测试 ,需要用阿里云控制台,用安全组打开这个端口,外网才能访问

澳门博发娱乐官网 28image.png

用外网ip 或网址测试后输出后表示成功

首先要判断一下,网卡是否有网址冲突(docker ps 中ports 为空),如有需要用 --bip参数错开私有网址另外要有EXPOSE 指令,在本地测试时,没有expose也能映射,但阿里云必须带这个.第三个外网访问,必须要安全组开放

1.6.4. 自动构建

源代码托管于github

Github代码有变化时,dockerhub自动获取Dockerfile,自动构建docker容器

Github

Github代码的根目录需要提供Dockerfile配置文件

澳门博发娱乐官网 29

DockerHub

澳门博发娱乐官网 30

澳门博发娱乐官网 31

澳门博发娱乐官网 32

澳门博发娱乐官网 33

澳门博发娱乐官网 34

 

停止docker命令: service docker stop

1.6.5. Dockerfile指令

  • #### CMD命令

CMD指令指定一个容器启动时要运行的命令。和RUN命令有些类似,只是RUN命令是构建是要运行的命令。RUN命令可以覆盖CMD命令

新建dockerfile:

澳门博发娱乐官网 35

构建镜像:

澳门博发娱乐官网 36

启动镜像:

澳门博发娱乐官网 37

RUN命令覆盖:

Ls命令覆盖了/bin/bash命令

  • #### ENTRYPOINT命令

ENTRYPOINT和CMD命令唯一区别就是不会被RUN命令覆盖

RUN的命令行的参数会被当做参数再次传递给ENTRYPOINT命令

RUN可以使用—entrypoint标志覆盖该命令

  • #### WORKDIR命令

创建镜像构建新容器时,在容器内部设置一个工作目录,ENTRYPOINT和/或者CMD命令都会在此目录下执行

RUN可以使用-W标志覆盖该命令

  • #### ENV命令

在镜像构建过程中设置环境变量

环境变量会持久保存到镜像构建的任何容器中

RUN可以使用-e标志来传递环境变量,这些变量将只会在运行时有效

  • #### USER命令

用来指定该镜像的运行用户

RUN可以使用-u标志来覆盖该变量

如果不指定用户组,默认用户组为root

  • #### VOLUME命令

用来向基于镜像构建的容器添加卷,数据共享功能

  • #### ADD命令

用来将构建环境下的文件和目录复制到镜像中,

可以添加构建环境的任何文件

会将一些归档文件(gzip,tar,xz,bzip2)等解开,然后再放到目标目录

如果目录位置不存在的话,Docker将会为我们创建这个全路径,

ADD命令使得构建缓存变得无效

  • #### COPY命令

与ADD命令类似,不过COPY不会像ADD那样去提取和解开归档文件

只能复制构建目录下的文件,和Dockerfile处于同一个目录

如果目录位置不存在的话,Docker将会为我们创建这个全路径,

  • #### ONBUILD命令

为镜像添加触发器,当一个镜像被当做其他镜像的基础镜像时,该镜像的触发器将会执行

为了防止递归调用,这些命令不能用在ONBUILD中:FROM, ONBUILD, MAINTAINER等

更多Docker相关教程见以下内容: 

Docker安装应用(CentOS 6.5_x64)  

Ubuntu 14.04安装Docker   

Ubuntu使用VNC运行基于Docker的桌面系统   

阿里云CentOS 6.5 模板上安装 Docker  

Ubuntu 15.04下安装Docker   

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker  

在 Ubuntu 15.04 上如何安装Docker及基本用法  

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里 

本文永久更新链接地址:

1.镜像管理 1.1. 列出镜像 Sudo docker images 1.2. 查看镜像 Sudo docker images xxxx 1.3. 拉取镜像 Sudo docker pull Ubuntu 1.4. 查找镜...

查看docker版本: docker version

Docker信息:          docker info

2、编译docker镜像

2.0  docker部署可执行jar包

首先将spring-boot工程编译导出jar包,例如:docker-springboot-0.0.1-SNAPSHOT.jar,将jar包上传到192.168.102.44任意目录下保存。

在/usr任意目录下建立一个docker目录,用于编译镜像使用,该目录名字由自己定义,可以与镜像名称相同,例如:/usr/docker-springboot

澳门博发娱乐官网 38

本文由胜博发-编程发布,转载请注明来源:在线安装docker工具,澳门博发娱乐官网4)  查看镜