Docker 是一个卡圆的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的LInux机器上,也可以实现虚拟化。

容器时完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。

Docker的应用场景

  • web应用的自动化打包和发布
  • 自动化测试和持续集成,发布
  • 在服务型环境中部署和调整数据库和其他的后台应用
  • 从头变异或者拓展现有的OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

xiaoya镜像最新地址_xiaoya镜像最新地址

 

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK (Redirecting…) 与 Docker 的守护进程通信

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Docker常用命令

一般指令

#启动Docker
sudo systemctl start docker

#停止Docker
sudo systemctl stop docker

#普通重启
sudo systemctl restart docker

#修改配置后重启
sudo systemctl daemon-reload
sudo systemctl restart docker

#查看版本
docker version

#查看Docker信息
docker info

镜像命令

列出本机Docker 上已经安装的镜像:

docker images

搜索Docker hub上面的镜像

# 普通搜索
docker search tomcat

# 搜索star大于50的镜像实例
docker search -s 50 tomcat

从Docker Hub上面下载镜像

# 以下载tomcat为例
docker pull tomcat[:version]

删除本地的某一个镜像

# 以删除tomcat为例
docker rmi tomcat[:version]
# 通过镜像ID删除
docker rmi -f 镜像ID
# 通过镜像ID删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG 
# 删除全部
# docker images -qa : 获取所有镜像ID


docker rmi -f $(docker images -qa)

镜像打包与运行

#打包一个我们自家的tomcat
docker commit -a sunwukong -m="package my tomcat" 要打包的镜像ID sunwukong/tomcat:1.0

# -a : 作者名称
# -m : 打包信息

#启动我们自己打包生成的 tomcat
docker run -it -p 7700:8080 sunwukong/tomcat:1.0

容器命令

启动容器

#如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
$ docker pull ubuntu

#以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
$ docker run -it ubuntu /bin/bash

# -i: 交互式操作。
# -t: 终端。
# ubuntu: ubuntu 镜像。
# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 #/bin/bash。
#要退出终端,直接输入 exit:


#后台运行
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
######################################################################

# 新建并进入容器,最后一个为本地容器的ID  
docker run -it --name="rivercentos001" 9f38484d220f

 # 为容器启一个名称
 -name="新容器名称"
 # 后台运行容器,并返回容器ID,也就是启动守护士容器
 -d 
 # 以交互模式运行容器,通常与-t同时使用.
 -i
 # 为容器重新分配一个伪终端,通过与-i同时使用
 -t 
 # 随机端口映射 [大写P]
 -P
 # 端口映射 [小写P]
 -p
 # 数据卷 加参数 ro:容器内的目录只读,不可写
 -v /宿主机绝对路径目录:/容器内目录[:ro] 镜像名

查看当前正在运行的Docker容器

docker ps
# 参数
# 列出当前正在运行的以及历史上运行过的
-a
# 显示最近创建的容器
-l
# 显示最近创建的N个容器
-n
# 静默模式,只显示容器编号
-q
# 不截断输出
--no-trunc
复制代码
退出容器

# 退出并停止
exit
# 容器不停止退出
ctrl+P+Q
启动容器

docker start 容器ID或容器name
重启容器

docker restart 容器ID或容器name
停止

docker stop 容器ID或容器name
强制停止

docker kill 容器ID或容器name

删除容器

# 删除已经停止的容器
**docker rm 容器ID或容器name** 
# 强制删除已经停止或正在运行的容器
docker rm -f  容器ID或容器name 

一次性删除所有正在运行的容器
docker rm -f $(docker ps -qa)

attach 命令与 exec

# 重新进入容器
 docker attach 容器ID或容器名称

# 

docker exec -it 容器ID或容器名称 /bin/bash

从容器内拷贝文件到宿主机

docker cp 容器ID或容器名称:/文件路径与文件名 宿主机地址