docker安装及使用
一、简介
说起docker,大多数人第一时间想起来的应该有虚拟化、云计算,这三者有什么区别呢?
对比:
- 我们所熟知的虚拟化有KVM、xen、Hyper-V等,这些虚拟化虚拟出来的服务器会产生一个新的操作系统(包括内核层、用户层等)
- 云计算跟虚拟化不是一个概念的东西,我们常见的OpenStack云计算技术是基于虚拟化的技术,虚拟出来一个个的虚拟机,然后再管理这些虚拟机
- docker也算一个轻量级的虚拟化,只不过它不会产生一个新的新的操作系统,二是产生一个容器,这个容器可以随时停止和重新启动,时间也比虚拟机要
- 快的多,都是毫秒级的;而且使用容器部署我们的业务服务,可以保证开发、测试、生产环境的高度一致,再也不会担心因为环境的问题导致运行服务失败的问题了。
二、docker安装
在这里使用的操作系统是centos7.4的版本,安装的docker版本是18.03.1-ce,首先我们先配置好我们的yum源,创建新文件:/etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg [docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg
- yum clean all && rm -rf /var/cache/yum #清除yum缓存
- yum makecache #建立新的缓存
- yum install -y yum-utils device-mapper-persistent-data lvm2 #安装依赖包
- yum -y install docker-ce #安装docker
- systemctl start docker && systemctl enable docker #安装并设置自启动
- systemctl status docker #查看docker的运行状态
- 现在我们可以使用docker -h/--help来查看docker命令的用法了
三、docker的使用
在这里我只跟大家介绍我所用到的一些命令的用法,其它的大家可以自行查看,docker command
command:
images或者image ls -a: 查看当前有哪些镜像,这里需要说明的是容器是由镜像创建的,那么我们怎么创建镜像呢?别急,一个一个来
pull 镜像名: 这样我们就是从GitHub上面拉取别人创建好的镜像,比如我们拉取Java的一个镜像,就是docker pull Java,基于这个
Java镜像,我们可以定制自己的镜像
search 镜像名: 就会搜索这个所有公共的镜像
built -t -f Dockerfile文件: 这个命令就是基于一个镜像(比如Java镜像)来创建自己的镜像,Dockerfile文件后面会详细介绍的
run --name 容器名 -d -p 宿主机端口:容器端口 镜像名: 这个是创建一个容器,-d是以后台进程运行,-p暴露你想暴露的端口
container ls -a 或者 ps -a: 查看已经存在的容器,从中可以看到容器运行的状态等信息
rmi 镜像名或者image rm 镜像名: 删除一个镜像
rm 容器名或者container rm 容器名: 删除一个容器,这里需要注意的是,删除一个运行中的容器是删除不掉的,需要先停止它,使用下面的命令停止
stop 容器名: 停止一个运行中的容器
基本的操作就这些,其它的命令还有很多,我就不一一介绍了,后面文章还会涉及到集群,到时候用到那些命令,再详细的介绍
四、Dockerfile
上面我们谈到创建自己的镜像的时候,用到了Dockerfile,我们先来看下我写过的一个Dockerfile文件:
FROM java
ENV APP_HOME=/opt/byit_jar \
BYIT_TYPE=byit-test WORKDIR ${APP_HOME}
ADD ${BYIT_TYPE}-0.0.1-SNAPSHOT.jar ${APP_HOME} ENTRYPOINT java -jar ${APP_HOME}/${BYIT_TYPE}-0.0.1-SNAPSHOT.jar
解释说明:
FROM java //这行的意思就是引用我们上面pull下来的那个Java镜像
ENV //定义变量
WOEKDIR //定义容器工作的目录,就是上面定义的/opt/byit_jar
ADD //就是把当前目录下的jar包拷贝到工作目录下面去
ENTRYPOINT //运行工作目录下的jar包,记住,不能以后台进程的方式去运行,不然的话,容器起不来
我们就可以运行docker build -t byit-test . 生成一个byit-test的镜像,我们可以使用这个镜像来生成容器了,执行,
docker run --name byit-test1 -d -p 8080:8080 byit-test //为了区分,我把容器的名称写成byit-test1了!
五、私有仓库
我们刚刚pull下来的镜像是在共有仓库中存储的,我们如果想把自己创建的镜像放在自己的私有仓库中使用的话,可以自己搭建
- 首先我们需要pull下来一个叫做registry的镜像,这里我简单的说下一个镜像是由仓库名和标签组成的,其实标签的话,可以说成版本号
- 下载完之后,我们直接运行docker run --name myregistry -d -p 5000:5000 registry 就创建属于自己的私有仓库了
- 然后我们如果想把上面的byit-test上传到私有仓库的话,还需要重命名一下,docker tag byit-test localhost:5000/byit-test,标签可以加也可以不加
- 下载也是一样的,我们需要指定私有仓库的地址/加名字才可以
docker安装及使用的更多相关文章
- 理解Docker(1):Docker 安装和基础用法
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- docker安装
系统要求:需要一个64位的centos7操作系统和版本3.10或更高版本的Linux内核 开始安装: uname -r //查看内核版本yum -y update //更新系统更新到最新 #安装d ...
- 2. Docker - 安装
一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...
- Docker 安装部署
Docker学习笔记 一.Ubuntu Docker 安装 (1).获取最新版本Docker安装包 lyn@lyn:/data/docker$ sudo wget -qO- https://get.d ...
- docker 安装
Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不 ...
- Docker安装及基本使用方法
Docker安装 CentOS6上安装Docker # yum -y install epel-release # yum -y install docker-io CentOS7上安装Docker ...
- Mac 下 docker安装
http://www.th7.cn/system/mac/201405/56653.shtml Mac 下 docker安装 以及 处理错误Cannot connect to the Docker d ...
- docker安装caffe
[最近一直想要学习caffe,但是苦苦纠结于环境安装不上,真的是第一步都迈不出去,还好有docker的存在!下面,对本人如何利用docker安装caffe做以简单叙述,不属于教程,只是记录自己都做了什 ...
- Docker安装Gitlab
一.Ubuntu16.4上Docker安装Gitlab 1.安装docker 参见:https://docs.docker.com/engine/installation/linux/ubuntuli ...
- 使用docker安装部署Spark集群来训练CNN(含Python实例)
使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...
随机推荐
- PHP 算式验证码
这里不多说,直接上代码! /** * 改造的加减法验证类 * 使用示例 VerifyCode::get('xxx', 20); * 验证示例 VerifyCode::check('1', 'xxx') ...
- 这是什么b
用table表格标签渲染总排名和总分数据 <!DOCTYPE html> <html lang="zh"> <head> <meta ch ...
- C#程序的编译过程
C#程序的编译过程,如下图 总结:编译器将C#代码编译成DLL/EXE,DLL/EXE包含metadata(清单数据,对代码的描述)和IL(中间语言),IL(中间语言)经过CLR/JIT第二次编译才是 ...
- SAP Material Type on Classification Tree(ClassMaster management)
SAP Material Type on Classification Tree(ClassMaster management) 1. Classification Tree 是 luxottica ...
- node单线程
const fs=require('fs'); console.time('timer'); fs.stat('./1.txt',(err,stats)=>{ //console.log(sta ...
- 【知识强化】第六章 查找 6.3 B树和B+树
本节课我们来学习本章的第一个难点,就是B树.那么B树它其实是一种数据结构,我们设计出这种数据结构就是为了提高我们的查找效率的,提高我们在磁盘上的查找效率.那么什么是B树呢?了解B树之前,我们先来回忆一 ...
- curl分析请求的各个部分耗时情况
curl 命令提供了 -w 参数,解释如下 -w, --write-out Make curl display information on stdout after a completed tran ...
- Vue学习笔记【32】——Vue路由(watch、computed和methods之间的对比)
computed属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算.主要当作属性来使用: methods方法表示一个具体的操作,主要书写业务逻辑: watch一个对象,键是需要观察的表达式,值是 ...
- epoll学习(二)
首先看程序一,这个程序想要实现的功能是当用户从控制台有任何输入操作时,输出”hello world!”. l 程序一 #include <unistd.h> #include <io ...
- POJ 2955 Brackets (区间dp入门)
Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...