Docker技术详解(零基础入门使用教程)

Docker

    • Docker技术简介
    • Docker的应用场景
    • Docker 的组成
      • docker进程相关操作
      • docker加速
      • 镜像操作
      • 运行容器的相关操作
      • 访问tomcat
      • 镜像备份
      • 容器之间的关联

Docker技术简介

Docker技术详解(零基础入门使用教程)_第1张图片

Docker 如日中天,这不是单纯的炒的概念,Docker的确解决了开发和运费的痛点,比如版本的搬迁,从测试环境搬迁到预发、生产环境,在企业开发与测试中,得到了非常广泛的应用。

  • Docker 是一个开放源码的软件项目,基于GO语言
  • Docker 可以让开发打包他们的应用以及依赖包到一个轻量级、可移植的容器中
  • Docker 打包好容器,可以发布到任何流行的 Linux 机器上,也可以实现虚拟化
  • 容器是完全使用沙箱机制,互相之间不会有任何接口
  • Docker 容器性能开销极低,这个才是关键
  • Docker 使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器

Docker的应用场景

  1. Web应用自动化打包和发布
  2. 自动化测试和持续集成、发布
  3. 在服务器环境中部署和调整数据库或其他的后台应用
  4. 使用Docker可以实现开发环境、测试环境、生成环境的一致性

Docker技术详解(零基础入门使用教程)_第2张图片
Docker 借鉴了标准的集装箱的概念。标准的集装箱将货物运往世界各地,Docker 将这个模型运行到自己的设计中。唯一不同的是: 集装箱是运输货物,Docker是运输软件。

Docker和传统的VM的区别

Docker技术详解(零基础入门使用教程)_第3张图片
传统的虚拟机基于安装操作系统上的虚拟机管理系统,如 VirtualBox 和 VMWare等,创建虚拟机,在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。

Docker技术详解(零基础入门使用教程)_第4张图片
Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。

docker 与传统的VM对比:

  1. 启动速度:vm 一般几十秒或者几分钟,docker几秒或者毫秒
  2. 大小:vm 一般几G,docker只有几兆

Docker 的组成

Docker技术详解(零基础入门使用教程)_第5张图片
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官网镜像的速度。

  1. 执行目录创建文件(如已存在请忽略此步)
touch /ect/docker/deamon.json
  1. 修改文件内容为
   {
     "registry-mirrors": ["https://v2c6fjn8.mirror.aliyuncs.com"]
   }

注意:此网址是从阿里云控制台复制过来的,每个登录用户都不一样。当然用这个也是可以的。

  1. 重启docker服务
systemctl restart docker

镜像操作

查看本地镜像

docker images

搜索镜像,这里以安装tomcat为例

[root@iZbp18425116ezmjdmbdgeZ ~]# docker search tomcat
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
docker pull tomcat:7 # 指定版本

删除镜像

docker rmi 容器名称

本地以有镜像,创建容器

docker create --name=容器名称 镜像名称
示例:
[root@iZbp18425116ezmjdmbdgeZ ~]# docker create --name=myTomcat tomcat
629104460e3fe485649e5784ec0c34f4dcc2277115937a54be00b968dc646510

查看容器

docker ps # 查看正在运行的容易
docker ps -a # 查看所有容器

运行容器

docker start myTomcat # start 后端可以跟容易id (前2-3位) 或者容器名称

停止容器

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 # 端口映射 如容器里面有tomcat,你本地的windows想访问:
	# docker tomcat 端口号是8080,需要在虚拟机映射一个端口9099
	# windows才可以访问 http://虚拟机ip:9099

创建容器,并且进入命令行

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

# 启动并作为守护进程
# -p 宿主机的端口: 容器里应用的端口8080
# war 挂载宿主机 -v 宿主机的路径: 容器路径
docker run -di --name --myTomcat -p 8080:8080 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat

http://虚拟机ip:9999
 
 # 把war包放到宿主机的挂载目录中,直接刷新浏览器就出现项目的页面
# 微服务 k8s 容器式的性能测试

镜像备份

docker save -o tomcat.tar 镜像名称

# 把tomcat.tar 放到其他电脑,其他人变成镜像
docker load -i tomcat.tar

容器之间的关联

docker run -di --name=tomcat2 -p 8080:8080 --link mysql

你可能感兴趣的