Docker技术简介
Docker 如日中天,这不是单纯的炒的概念,Docker的确解决了开发和运费的痛点,比如版本的搬迁,从测试环境搬迁到预发、生产环境,在企业开发与测试中,得到了非常广泛的应用。
- Docker 是一个开放源码的软件项目,基于GO语言
- Docker 可以让开发打包他们的应用以及依赖包到一个轻量级、可移植的容器中
- Docker 打包好容器,可以发布到任何流行的 Linux 机器上,也可以实现虚拟化
- 容器是完全使用沙箱机制,互相之间不会有任何接口
- Docker 容器性能开销极低,这个才是关键
- Docker 使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器
Docker的应用场景
- Web应用自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务器环境中部署和调整数据库或其他的后台应用
- 使用Docker可以实现开发环境、测试环境、生成环境的一致性
Docker 借鉴了标准的集装箱的概念。标准的集装箱将货物运往世界各地,Docker 将这个模型运行到自己的设计中。唯一不同的是: 集装箱是运输货物,Docker是运输软件。
Docker和传统的VM的区别
传统的虚拟机基于安装操作系统上的虚拟机管理系统,如 VirtualBox 和 VMWare等,创建虚拟机,在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。
docker 与传统的VM对比:
- 启动速度:vm 一般几十秒或者几分钟,docker几秒或者毫秒
- 大小:vm 一般几G,docker只有几兆
Docker 的组成
Docker 需要分为三部分: 仓库 、 镜像 容器
名称 | 说明 |
---|
Docker镜像 | Docker 镜像是用于创建Docker容器的模板。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。 | Docker容器 | 容器是独立运行的一个或多个应用。镜像相当于类,容易相当于类的实例 | Docker客户端 | Docker客户端通过命令行或者其他工具使用Docker API与Docker的守护进程通信 | Docker主机 | 一个物理或者虚拟的机器用于执行Docker守护进程和容器 | Docker守护进程 | 是Docker服务器端进程,负责支撑Docker容器的运行以及镜像的管理 | Docker仓库 | Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用,用户也可以将自己本地的镜像推送到Docker仓库供其他人下载 |
docker进程相关操作
查看docker版本
docker -v
查看docker命令
docker --help
查看docker服务端与客户端版本详情
docker version
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
查看docker运行状态
systemctl status docker
关闭防火墙
systemctl stop firewalld
docker加速
默认情况下,docker下载镜像是从官网下载,下载速度特别慢,我们可以使用阿里云加速器可已提升获取Docker官网镜像的速度。
- 执行目录创建文件(如已存在请忽略此步)
touch /ect/docker/deamon.json
- 修改文件内容为
{
"registry-mirrors": ["https://v2c6fjn8.mirror.aliyuncs.com"]
}
注意:此网址是从阿里云控制台复制过来的,每个登录用户都不一样。当然用这个也是可以的。
- 重启docker服务
systemctl restart docker
镜像操作
查看本地镜像
docker images
搜索镜像,这里以安装tomcat为例
[root@iZbp18425116ezmjdmbdgeZ ~]
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 3193 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 94 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base… 58 [OK]
kubeguide/tomcat-app Tomcat image for Chapter 1 31
consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 18 [OK]
cloudesire/tomcat Tomcat server, 6/7/8 15 [OK]
aallam/tomcat-mysql Debian, Oracle JDK, Tomcat & MySQL 13 [OK]
arm32v7/tomcat Apache Tomcat is an open source implementati… 11
rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl… 7 [OK]
maluuba/tomcat7-java8 Tomcat7 with java8. 6
arm64v8/tomcat Apache Tomcat is an open source implementati… 6
unidata/tomcat-docker Security-hardened Tomcat Docker container. 5 [OK]
jelastic/tomcat An image of the Tomcat Java application serv… 3
amd64/tomcat Apache Tomcat is an open source implementati… 3
cfje/tomcat-resource Tomcat Concourse Resource 2
fabric8/tomcat-8 Fabric8 Tomcat 8 Image 2 [OK]
oobsri/tomcat8 Testing CI Jobs with different names. 2
camptocamp/tomcat-logback Docker image for tomcat with logback integra… 1 [OK]
picoded/tomcat7 tomcat7 with jre8 and MANAGER_USER / MANAGER… 1 [OK]
99taxis/tomcat7 Tomcat7 1 [OK]
chenyufeng/tomcat-centos tomcat基于centos6的镜像 1 [OK]
ppc64le/tomcat Apache Tomcat is an open source implementati… 1
softwareplant/tomcat Tomcat images for jira-cloud testing 0 [OK]
secoresearch/tomcat-varnish Tomcat and Varnish 5.0 0 [OK]
s390x/tomcat Apache Tomcat is an open source implementati… 0
[root@iZbp18425116ezmjdmbdgeZ ~]
找到所有的镜像,拉取镜像
docker pull 镜像ID
docker pull tomcat:7
删除镜像
docker rmi 容器名称
本地以有镜像,创建容器
docker create --name=容器名称 镜像名称
示例:
[root@iZbp18425116ezmjdmbdgeZ ~]
629104460e3fe485649e5784ec0c34f4dcc2277115937a54be00b968dc646510
查看容器
docker ps
docker ps -a
运行容器
docker start myTomcat
停止容器
docker stop myTomcat
删除没有运行的容器
docker rm 容器id或者名称
删除正在运行的容器
docker -rm -f 容器id或者名称
删除所有容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
运行容器的相关操作
查看docker run 命令 ,创建并且启动容器
docker run --help
docker run 后面的参数
-i
-t
-v
-d
-p
创建容器,并且进入命令行
docker run -it --name=myTomcat2 tomcat /bin/bash
退出
exit
退出之后,重新进入容器
docker run -id --name=myTomcat2 tomcat
docker exec -it myTomcat2 /bin/bash
宿主机与docker容器的文件传递
1、在宿主机上创建一个文件
touch test.txt
2、把文件复制到容器里面去
docker cp test.txt myTomcat2:/
3、进入跟目标
cd /
从容器中的文件copy到宿主机中
touch abc.txt
exit
docker cp myTomcat2:abc.txt /root
访问tomcat
docker run -di --name --myTomcat -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat
http://虚拟机ip:9999
镜像备份
docker save -o tomcat.tar 镜像名称
docker load -i tomcat.tar
容器之间的关联
docker run -di --name=tomcat2 -p 8080:8080 --link mysql
|