从零开始安装、编译、部署 Docker
简介
主要介绍如何从基础系统debian部署docker
关于docker基础知识在 相关资料 里有链接
安装docker
1、使用root用户身份添加apt源
添加public key使docker的安装源授信
$ curl -s 'https://sks-keyservers.net/pks/lookup?op=get&search=0xee6d536cf7dc86e2d7d56f59a178ac6c6238f52e' | sudo apt-key add --import
安装apt的https支持
sudo apt-get update && sudo apt-get install apt-transport-https
安装image虚拟化支持
sudo apt-get install -y linux-image-extra-virtual
添加apt源
echo "deb https://packages.docker.com/1.11/apt/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
安装docker
apt-get update && apt-get install docker-engine
查看是否安装成功
docker info
看到以下信息就安装成功了
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 15
Server Version: 1.11.2-cs3
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 17
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 3.871 GiB
Name: debian
ID: IWCZ:QXXZ:VBUN:UMF7:XRG3:CMXB:6LUO:F65C:OA6B:75QQ:7SEW:3OKT
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
制作基础软件镜像
jdk8
首选需要安装jdk,这里使用jdk8进行安装
download jdk
同目录下编写Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/yuuji/debian:latest
ADD jdk-8u101-linux-x64.tar.gz /opt
ENV JAVA_HOME /opt/jdk1.8.0_101
WORKDIR /usr/bin
RUN ln -s /opt/jdk1.8.0_101/bin/java java
目录结构如下:
编译发布
docker build -t jdk8 .
也可以在docker hub服务器创建仓库发布到远程
docker build -t registry.cn-hangzhou.aliyuncs.com/xxx/jdk8 .
docker push registry.cn-hangzhou.aliyuncs.com/xxx/jdk8
发布后可以到远程查看,也可以使用命令查看
docker images
mave3
基于jdk8我们在制作一个maven3的image,步骤同上,我就不一一列举命令了;
Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/yuuji/jdk8:latest
ADD settings.xml /root/.m2/settings.xml
ADD apache-maven-3.3.9-bin.tar.gz /opt
WORKDIR /usr/bin
RUN ln -s /opt/apache-maven-3.3.9/bin/mvn mvn
发布,查看是否成功
制作软件错误
如果过程中遇到错误怎么办
使用 命令 docker images 如果看到了none的可以使用命令 docker rmi IMAGE ID 进行清理;
如果清理不掉的话是这个镜像被使用了,使用docker ps -a 然后找到使用的CONTAINER
然后 docker rm CONTAINER ID
编译项目与部署
这里是通过spring-boot首先项目可以启动
然后在项目跟目录下建立Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/yuuji/maven3:latest
EXPOSE 7001
RUN mkdir -p /opt/leona
WORKDIR /opt/leona
ADD . /opt/leona
RUN mvn clean install -Dmaven.test.skip
CMD ["java","-jar","target/leona.jar"]
端口号 7001 是你spring-boot web配置的
结构如下:
然后编译image 同软件,这里我就不发布到远程了
docker build -t xxx .
最终的本地仓库docker images
部署
已经编译好了软件和程序的image接下来就是部署了
docker run -d -p 7001:7001 xxx
检查一下curl localhost:7001
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Leona</title>
</head>
<body>
hello word!
</body>
</html>
是不是很简单? 233
具体参数不解释了,可以自己查;
相关资料
用云栖社区APP,舒服~
从零开始安装、编译、部署 Docker的更多相关文章
- Jenkins教程——从安装到部署Docker服务(一)安装Jenkins
前言 写了好久Jenkins的脚本了,写得虽然不是太好,但是可以基本满足需要,最近比较忙,这个月也没怎么更新博客,开始更新Jenkins这个系列的文章,打算从安装Jenkins -> 流水线工程 ...
- Jenkins教程——从安装到部署Docker服务(二)声明式流水线HelloWorld
前言 本文通过一个声明式流水线的HelloWorld程序做一下流水线基础入门,对常用的流水线参数进行简要说明 什么是流水线 现实中的流水线 流水线比较好理解,类比于现实生活中的生产流水线,每个流程只做 ...
- 014.Kubernetes二进制部署docker
一 部署docker 1.1 部署docker组件 docker 运行和管理容器,kubelet 通过 Container Runtime Interface (CRI) 与它进行交互. 1.2 下载 ...
- docker安装tomcat&部署javaweb程序
一.docker定制简单的java-web应用镜像 网址: 1.jdk下载网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk ...
- Linux下部署docker记录(0)-基础环境安装
以下是centos系统安装docker的操作记录 1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker安装epel源[root@docker-server ~]# wg ...
- CRFPP/CRF++编译安装与部署
CRFPP/CRF++编译安装与部署 下载CRF++ https://taku910.github.io/crfpp/#download 说明:在上面网站中下载CRF++ 0.58 解压 tar zx ...
- 从零开始安装 Ambari (4) -- 通过 Ambari 部署 hadoop 集群
1. 打开 http://192.168.242.181:8080 登陆的用户名/密码是 : admin/admin 2. 点击 “LAUNCH INSTALL WIZARD”,开始创建一个集群 3 ...
- Spark Tachyon编译部署(含单机和集群模式安装)
Tachyon编译部署 编译Tachyon 单机部署Tachyon 集群模式部署Tachyon 1.Tachyon编译部署 Tachyon目前的最新发布版为0.7.1,其官方网址为http://tac ...
- Docker安装与部署
安装Docker: 查看你当前的内核版本: uname -r 更新yum包: sudo yum update 卸载旧版本(如果安装过旧版本的话): sudo yum remove docker doc ...
随机推荐
- 【EF数据库链接报错】“The underlying provider failed on open”
EF在操作数据库时要反复链接.断开数据库,如果连接字符串是windows 服务验证,而不是用的用户名和密码,那么尝试访问数据库的用户是NT AUTHORITY\NETWORK SERVICE.权限不够 ...
- mysql使用常见问题
常见问题之一: 启动mysql时显示: The server quit without updating PID file 1.可能是/usr/local/mysql/data/mysql.pid文件 ...
- notepad++中配置python运行命令
1.安装notepad++ 2.打开notepad++ 3.键盘上按下“F5”,在弹出的命令菜单中输入“cmd /k C:\Python30\python.exe "$(FULL_CURRE ...
- Java学习之路(五):常见的对象操作
Object对象 我们先来介绍一下API API(Application Programming Interface):应用程序编程接口 Java API 就是Java提供给我们使用的类,这些类将底层 ...
- 第十篇---javascript函数this关键字
<script type="text/javascript" charset="utf-8"> //this:this对象是指运行时期基于执行环境所 ...
- web操作文件的上传到服务器 并可下载 并且读取出来
1.文件的上传-servlet实现文件上传---核心API—DiskFileItemFactory 一.文件上传概述 l 实现web开发中的文件上传功能,需完成如下二步操作: • 在web页面 ...
- transition过渡效果
语法:transition: property duration timing-function delay; transition-property 规定设置过渡效果的 CSS 属性的名称.tran ...
- 深入分析java web技术内幕目录一览
Web请求过程 如何发起请求:browser,httpclient http解析:chrome ,cache Dns域名解析:域名缓存 cdn:负载,动态加速,回源 Java I/O I/0类库的基本 ...
- PHP中return,exit,die的区别
参考:die(),exit(),return的区别 1.die() 是遇到错误才停止,停止程序运行,输出内容(是程序级别的) 2.exit,exit():是一个函数 是停止程序运行,前者不输出内容:后 ...
- 什么是SharePoint?
在聊SharePoint开发之前,有必要说下什么是SharePoint. 在我工作的过程中,经常遇到客户对SharePoint不太了解的情况.有客户说,SharePoint太烂了,DropBox能做到 ...