月度存档: 1 月 2021

fd-mobileUtil.ane

1.application.xml

<?xml version="1.0" encoding="utf-8"?>
<application xmlns="http://ns.adobe.com/air/application/28.0">
  <id>air.sms</id>
  <versionNumber>0.1</versionNumber>
  <supportedProfiles>mobileDevice</supportedProfiles>
  <filename>sms</filename>
  <name>sms</name>
  <android>
    <manifestAdditions><![CDATA[<manifest android:installLocation="auto">
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.SEND_SMS" />

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch" />
</manifest>]]></manifestAdditions>
  </android>
  <iPhone>
    <InfoAdditions><![CDATA[<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackOpaque</string>
<key>UIRequiresPersistentWiFi</key>
<string>NO</string>
<key>UIApplicationExitsOnSuspend</key>
<true />
<key>UIDeviceFamily</key>
<array>
    <string>1</string>
</array>]]></InfoAdditions>
    <requestedDisplayResolution>high</requestedDisplayResolution>
  </iPhone>
  <initialWindow>
    <title>sms</title>
    <content>sms.swf</content>
    <visible>true</visible>
    <fullScreen>true</fullScreen>
    <!--<autoOrients>false</autoOrients>-->
    <!--<aspectRatio>landscape</aspectRatio>-->
    <renderMode>direct</renderMode>
    <!--<depthAndStencil>true</depthAndStencil>-->
    <!-- required for 3D -->
    <systemChrome>standard</systemChrome>
  </initialWindow>
  <icon>
    <image48x48>icons/icon_48.png</image48x48>
    <image57x57>icons/icon_57.png</image57x57>
    <image72x72>icons/icon_72.png</image72x72>
    <image76x76>icons/icon_76.png</image76x76>
    <image96x96>icons/icon_96.png</image96x96>
    <image114x114>icons/icon_114.png</image114x114>
    <image120x120>icons/icon_120.png</image120x120>
    <image144x144>icons/icon_144.png</image144x144>
    <image152x152>icons/icon_152.png</image152x152>
    <!--<image512x512>icons/icon_512.png</image512x512>-->
  </icon>
  <!-- 
    AIR options:
    http://livedocs.adobe.com/flex/3/html/File_formats_1.html#1043413

    AIR mobile options:
    http://help.adobe.com/en_US/air/build/WSfffb011ac560372f-5d0f4f25128cc9cd0cb-7ffe.html

    iOS icons guidelines:
    http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html

    Android manifest documentation:
    http://developer.android.com/guide/topics/manifest/manifest-intro.html
    -->
  <extensions>
    <extensionID>com.techmx.ext.MobileUtil</extensionID>
  </extensions>

</application>

2.Package.bat
call adt -package -target %TYPE%%TARGET% %OPTIONS% %SIGNING_OPTIONS% "%OUTPUT%" "%APP_XML%" %FILE_OR_DIR% -extdir lib/

3.RunApp.bat

:target
::goto desktop
goto android-debug

sb3:Swagger2

Swagger2 是传说中的api文档管理利器,我们一起来学习下如何在sb2中集成swagger2

1.新建一个sb项目

依赖选择Web、LomBok 依赖,(JPA 和 Mysql)可选,系统自动生成的 Pom文件中没有swagger相关的配置,所以需要手动加入:

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>

有时候还需要加入maven-surefire-plugin,防test报错

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

最后的pom文件长成这样:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.study</groupId>
    <artifactId>sb4</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>sb4</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>

    </build>

</project>

如果选了jpa和mysql,那么要在application.properties上加上如下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=yourname
spring.datasource.password=yourcode
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

2.在 SpringBoot 启动类(Application)的同级目录新建一个 Swagger 配置类,

注意 Swagger2 配置类必须与项目入口类 Application 位于同一级目录,否则生成 Api 文档失败,代码如下:

package com.study.sb4;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
//Swagger 配置类
@Configuration
// 启用 Swagger2
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                // 文档信息对象
                .apiInfo(apiInfo())
                .select()
                // 被注解的包路径
                .apis(RequestHandlerSelectors.basePackage("com.study.sb4.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 标题
                .title("springboot 利用 swagger 构建 API 文档")
                // Api 文档描述
                .description("简单优雅的 restful 风格,https://amyflash.com")

                .termsOfServiceUrl("https://blog.csdn.net/turodog/")
                // 文档作者信息
                .contact(new Contact("harriet", "https://github.com/amyflash", "nbllq@qq.com"))
                // 文档版本
                .version("1.0")
                .build();
    }
}

3.配置被注解的 Controller 类

编写各个接口的请求参数,返回结果,接口描述等等,代码如下:

package com.study.sb4.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

@RestController
@RequestMapping("/test")
// @Api:修饰整个类,描述Controller的作用
@Api("TestController Api 接口文档")
public class TestController {
    // 使用该注解忽略这个API
    @ApiIgnore
    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String  jsonTest() {
        return " hi you!";
    }

    // @ApiOperation:描述一个类的一个方法,或者说一个接口
    @ApiOperation(value="无参get", notes="获取test")
    @RequestMapping(value={""}, method= RequestMethod.GET)
    public String getTest() {
        return "test get without param";
    }

    @ApiOperation(value="带参get", notes="根据id来获取test详细信息")
    @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Integer",paramType = "path")
    @GetMapping("/{id}")
    public String findById(@PathVariable("id") Integer id){
        return "this is get id:"+id;
    }

    @ApiOperation(value="post一个参数", notes="postxx信息")
    // @ApiImplicitParam:一个请求参数
    @ApiImplicitParam(name = "param", value = "param", required = true, dataType = "String")
    //发送post请求
    @PostMapping("/p1")
    public String postTest1(@RequestBody String param){
        return "this is post one param :"+param;
    }

    /*@ApiOperation(value="删除学生", notes="根据url的id来指定删除的学生")
    @ApiImplicitParam(name = "id", value = "学生ID", required = true, dataType = "Integer",paramType = "path")
    @DeleteMapping("/{id}")
    public String deleteById(@PathVariable("id") Integer id){
        studentService.delete(id);
        return "success";
    }*/

   /* @ApiOperation(value="更新学生信息", notes="根据url的id来指定更新学生信息")
    // @ApiImplicitParams:多个请求参数
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "学生ID", required = true, dataType = "Integer",paramType = "path"),
            @ApiImplicitParam(name = "student", value = "学生实体student", required = true, dataType = "Student")
    })
    @PutMapping(value="/{id}")
    public String updateStudent(@PathVariable Integer id, @RequestBody Student student) {
        Student oldStudent = this.findById(id);
        oldStudent.setId(student.getId());
        oldStudent.setName(student.getName());
        oldStudent.setAge(student.getAge());
        studentService.save(oldStudent);
        return "success";
    }*/

}

4.启动项目

访问 http://localhost:8080/swagger-ui.html 地址,api文档就自动写好啦,nb得一塌糊涂,有没有!

sb2:LomBok

LomBok 是什么?
LomBok 是一个插件,它能通过注解帮我们消除那些必须要写但是重复的代码,比如setter,getter,构造函数之类的方法。

试想一个场景,在项目开发中,我们往往需要定义大量的数据库实体或者某些工具 Bean ,每一个 Bean 都需要我们编写 getter 、setter 方法、构造方法以及 toString 等方法。这是一个非常繁琐的过程。程序员准则,做三遍以上的重复事情就必须想办法让它自动化了。所以今天给你们介绍一个牛逼的插件「LomBok」。

LomBok 常用注解简介

@Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法
@Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
@Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
@NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
@Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
@Log作用于类,创建一个log属性
@Builder:使用builder模式创建对象
@NoArgsConstructor:创建一个无参构造函数
@AllArgsConstructor:创建一个全参构造函数
@ToStirng:创建一个toString方法
@Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。
@RequiredArgsConstructor:创建对象
@UtilityClass:工具类
@ExtensionMethod:设置父类
@FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
@Cleanup: 关闭流、连接点。
@EqualsAndHashCode:重写equals和hashcode方法。
@toString:创建toString方法。

如何安装?
直接从 http://plugins.jetbrains.com/ 下载,然后放到IDEA 安装文件下面的 plugins,然后重启 IDEA。
写个代码来测试一下:

package com.study.sb2lombok.mycode;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data //自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法
@AllArgsConstructor //自动生成构造方法
@NoArgsConstructor //自动生成构造方法
public class Testlombok {
    private  String url="amyflash.com";
}
package com.study.sb2lombok.controller;

import com.study.sb2lombok.mycode.Testlombok;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


    @RestController
    @RequestMapping("/test")
    public class Test {
        @GetMapping("/testLombok")
        public Testlombok g1etUrl(){
          Testlombok dd = new Testlombok();
          //  student.setUrl("6666666666");
            System.out.println(dd.toString());
            return dd;
        }

    }

访问:localhost:8080/test/testLombok

sb1:第一个springboot2程序

朋友很早就安利我说springboot2(以下简称sb)是可以和php的yii2媲美的架构,还有很多独特的兼容微服务的特性所在,简单一句话值得上手,之前一直很忙,现在临近过年,终于有点时间了,赶快来学习下,看看sb是不是真的好用。
软件工具:idea

1.新建一个Spring Initializr的project,设置:

groupId:com.cfzy (公司名)
artifactId:hello (项目名)

2.选依赖

web必选,其他看情况,数据库我选了mysql

3.点击finish按钮,创建完成

idea软件就开始下载一堆东西构建sb项目啦,看网速吧,大概等个几分钟
如果觉得慢,建议配置阿里源
在setttins.xml文件中找到标签对,进行修改:

 <mirrors>
     <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>      </mirror> 
</mirrors>

4.写一个控制器类,注意目录结构

注意项目自动生成的HelloApplication类层级必须大于其他自定义 java 类,否则启动项目访问会报 Whitelabel Error Page 错误,原因是项目扫描不到 @RestController、@RequestMapping 等注解配置的方法和类。

package com.cfzy.hello.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String sayHello() {
        return "Hello,World!";
    }

}

访问localhost:8080/hello,可以看到输出Hello,World!
ps:import类名太长记不住,idea有个地方设置好了可以自动import相关类
File->settings->Editor->General->Auto Import->java窗口里的两个钩选上即可
但是RestController和RequestMapping这个得记住!

参考:https://www.jianshu.com/p/83c0541165cf
https://www.cnblogs.com/nasus/archive/2019/12/26/12102079.html
sb系列教程:
https://www.cnblogs.com/nasus/tag/SpringBoot/

音乐播放器

https://amyflash.com/blog/

导引养生功12法


八段锦

易筋经

就是我

明目功

八式太极拳

街舞音乐

window下启动redis服务

在windows环境下启动redis服务,前提是你安装好了,启动如下:

一,进入redis的安装目录下,在地址栏输入“cmd”,回车
二,然后会进入cmd界面,直接运行命令redis-server.exe redis.windows.conf。如果报错,依次执行第一条指令:redis-cli.exe,第二条指令:shutdown第三条指令:exit
三,在命令行窗口输入redis-server.exe redis.windows.conf,就会显示Redis服务器的信息,就代表Redis服务器已经启动了。


ps: 另外给大家推荐一款redis 可视化工具:RedisDesktopManager。

参考地址:
https://www.cnblogs.com/chaojiyingxiong/p/11281502.html

showdoc好用的api文档管理工具

https://github.com/star7th/showdoc

centos7 之 设置环境变量

设置centos环境变量,可以用export命令,也可以通过修改文件形式实现,本文以lavavel需要设置环境变量为例,将 /root/.config/composer/vendor/bin 路径加到 PATH

一、临时生效

export PATH=$PATH:/root/.config/composer/vendor/bin
1
使用 export 设置的变量,只对当前终端 Shell 有效,也就是说如果新打开一个终端,那这个 export 设置的变量在新终端中是无法读取到的。适合设置一些临时变量。

二、通过修改配置文件

首先是设置全局环境变量,对所有用户都会生效:

1、/etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。
2、/etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

对单个用户生效:

1、~/.bash_profile 或 ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。
2、~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。

此外,修改 /etc/environment 这个文件也能实现环境变量的设置。
/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
注:系统是先执行/etc/environment,再执行/etc/profile

以修改/etc/profile 为例:

PATH=”$PATH:/root/.config/composer/vendor/bin”
export PATH
1
2
执行

source /etc/profile
1
使其立即生效。
如果想多加个路径yourpath1,在将“:yourpath1” 加载path后面,如:
PATH=”$PATH:/root/.config/composer/vendor/bin:yourpath1”

CentOS7怎么更换yum源

163yum源:
1)备份当前yum源防止出现意外还可以还原回来
cd /etc/yum.repos.d/
cp /CentOS-Base.repo /CentOS-Base-repo.bak
2)使用wget下载163yum源repo文件
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
3) 清理旧包
yum clean all
4)把下载下来163repo文件设置成为默认源
mv CentOS7-Base-163.repo CentOS-Base.repo
5)生成163yum源缓存并更新yum源
yum makecache
yum update

阿里云yum源:
1)备份当前yum源防止出现意外还可以还原回来
cd /etc/yum.repos.d/
cp /CentOS-Base.repo /CentOS-Base-repo.bak
2)使用wget下载阿里yum源repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
3) 清理旧包
yum clean all
4)把下载下来阿里云repo文件设置成为默认源
mv Centos-7.repo CentOS-Base.repo
5)生成阿里云yum源缓存并更新yum源
yum makecache
yum update

Ubuntu 14.04 安装Docker

ubuntu 18.04安装docker
一、安装docker

1、安装docker:sudo apt-get install -y docker.io

2、启动docker服务:systemctl start docker

3、设置开机启动:systemctl enable docker

4、查看docker状态:systemctl status docker

5、停止docker服务:systemctl stop docker

6、查看docker版本:docker version

二、非root用户运行docker

1、添加docker用户组:sudo groupadd docker

执行以上命令会提示已存在,原因是在安装docker时已自动创建。

2、将指定用户添加到用户组(username为你的用户名):sudo gpasswd -a username docker

3、查看是否添加成功:cat /etc/group | grep ^docker

3、重启docker:sudo systemctl restart docker

5、更新用户组:newgrp docker

6、执行docker命令,比如:docker ps -a
————————————————
版权声明:本文为CSDN博主「默凉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42102546/article/details/127905863

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

安装校验

root@aaa:$ sudo docker version
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 07:52:04 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:        Tue Feb 28 07:52:04 2017
 OS/Arch:      linux/amd64
 Experimental: false

参考地址:

https://yq.aliyun.com/articles/110806
https://blog.csdn.net/u011722133/article/details/79865957

二、docker-compose安装
转载地址: https://blog.csdn.net/nimoyaoww/article/details/79155489
1,下载docker-compose

$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2,授权
$ sudo chmod +x /usr/local/bin/docker-compose
3,查看版本信息
$ docker-compose --version
显示出版本信息,即安装成功。

三、docker-machine安装
说明:docker-machine的使用是要基于virtualBox的。如果没有安装安装过,请先安装virtualBox。

1,安装virtualBox
登录virtualBox官网:https://www.virtualbox.org/wiki/Linux_Downloads

找到”Ubuntu 14.04 (“Xenial”) i386 | AMD64″字样,点击“AMD64”进行下载。

下载后,执行以下命令进行安装:

$ sudo gdebi virtualbox-5.2_5.2.8-121009_Ubuntu_trusty_amd64.deb
2,下载并安装docker-machine (https://github.com/docker/machine/releases/)
On Linux

$ curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
    chmod +x /tmp/docker-machine &&
    sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

3,查看版本信息
$ docker-machine version
显示出版本信息,即安装成功。

Docker加速

https://www.cnblogs.com/hutuchong/p/7748429.html

安装完成后,因为 Docker 镜像库要访问境外网络,网络不稳定,需要改成一个稳定的镜像库。这里使用阿里云的镜像库,需要先开通阿里云的开发者账号功能. 阿里云网址: https://www.aliyun.com/,

docker使用阿里云镜像仓库(not work!!!, why??)
1:阿里云docker仓库 https://dev.aliyun.com/search.html

2:进去用淘宝帐号登录。,点击自己的管理中心。

3:在管理中心点击加速器,右边面板会有你的加速地址,右边面板下面有详细设置步骤。

安装/升级你的Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
如何配置镜像加速器
针对Docker客户端版本大于1.10.0的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

$sudo mkdir -p /etc/docker
$sudo tee /etc/docker/daemon.json <<-‘EOF’ # 然后按照提示,输入下面内容,包括EOF
{
“registry-mirrors”: [“https://8kgigxxl.mirror.aliyuncs.com”]
}
EOF
$sudo systemctl daemon-reload
$sudo systemctl restart docker
Ubuntu14.04上没有systemctl 命令, 要 sudo service docker start

发现有时下载不全的话,要换加速器地址,比如:DOCKER_OPTS=”$DOCKER_OPTS –registry-mirror=http://f2d6cb40.m.daocloud.io” 网易的加速地址: http://hub-mirror.c.163.com

发现当执行完上面第一,第二条命令后,
$ sudo service docker start,显示 start: Job failed to start ;

$sudo service docker status ,显示docker stop/waiting;
然后 $cd /var/log/upstart, $gedit docker.log, 查看日志文件,发现:
不停的在打印 Waiting for /var/run/docker.sock
unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: registry-mirrors: (from flag: [https://8kgigxxl.mirror.aliyuncs.com/], from file: [https://o3trwnyj.mirror.aliyuncs.com])

不知道怎么搞得,把帖子里的加速地址和自己的加速地址混了,导致冲突,最后将 /etc/docker/daemon.json 文件删除掉,再$ sudo service docker start, 输出 docker start/running, process 9722
PS: 运行docker命令要sudo, 或者root 权限下; 或者把用户加入docker组。
看到有帖子是说按照如下加速, 不知道起作用了没?

因为在 ubuntu 系统下,Docker的守护进程启动参数的配置文件在 /etc/default/docker ,所以上面的命令实际上是向这个文件的末尾添加一行如下配置

DOCKER_OPTS=”$DOCKER_OPTS –registry-mirror=https://8kgigxxl.mirror.aliyuncs.com”

###################################################################

http://wiki.ros.org/android_ndk/Tutorials/BuildingNativeROSPackages

由于 https://get.docker.com/ubuntu/ 被墙了, 所以通过上述步骤安装最新版的docker。 注意不能通过如下命令安装docker,要安装最新版的docker。

通过系统自带包安装(不是最新版)
sudo apt-get update
sudo apt-get install -y docker.io

在执行第二条指令时, 要替换成

$ sudo docker run -i -t registry.docker-cn.com/library/ubuntu /bin/bash

这篇文章也有一些参考价值 http://www.cnblogs.com/lighten/p/6034984.html