什么是docker

Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。

Docker容器,将一个软件包在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库等任何可以安装在服务器上的东西。

它都将始终运行相同的程序,无论软件的环境如何。

 

为什么用docker

增加部署频率

降低新版本的故障率

缩短修复之间的准备时间

新版本崩溃时更快的平均恢复时间

 

 

 

如何使用Docker构建与环境无关的系统?

有三个主要功能有助于实现这一目标:

环境变量注入

只读文件系统

 

 

 

Dockerfile中的命令COPY和ADD命令有什么区别?

一般而言,虽然ADD并且COPY在功能上类似,但是首选COPY。

1.COPY仅支持将本地文件复制到容器中,

2.ADD如仅限本地的tar提取和远程URL支持, ADD添加压缩包中的文件时不需要解压

3.不建议用URL方式添加文件,可以使用wget,因为用ADD添加URL会增加容器的层数,增加size

 

什么是docker镜像

Docker镜像是Docker容器的源代码。换句话说,Docker镜像用于创建容器。使用build命令创建镜像,并且在使用run启动时它们将生成容器。镜像存储在Docker注册表中,registry.hub.docker.com因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。

 

制作docker顺序

  1. 将不常用的文件copy到最底层,常用和变化的放在上层,这样可以使用前面build产生的缓存
  2. 例如A不常用,B常用

WORKDIR APP/

Copy A

Copy B

如何创建镜像docker

Docker build –t testx /home/app

指定app是docker的工作目录

设置了workDIR后,docker的build run copy都是相对于workdir目录进行操作

 

Docker运行状态

·  运行

·  已暂停

·  重新启动

·  已退出

 

Docker镜像与层有什么关系

下面的Dockerfile包含四个命令,每个命令都创建一个层。

FROM ubuntu:15.04

COPY . /app

RUN make /app

CMD python /app/app.py

 

 

Docker架构图

docker中add和copy的命令 docker add copy_centos

docker查看版本

docker version

 

Docker拉取镜像

例如:拉取centos镜像

Docker pull centos //默认拉取最新的

Docker pull centos:1156//拉取1156版本的centos镜像

 

Docker查看镜像

Docker image

docker中add和copy的命令 docker add copy_centos_02

SIZE是解压后的大小

 

从docker hub拉取镜像时如果效率慢如何解决

使用镜像加速器,例如阿里云,docker中国等等

在/etc/docker目录下创建一个daemon.json的文件

docker中add和copy的命令 docker add copy_centos_03

 

Docker查找镜像

 

例如查看仓库是否有tomcat镜像:

Docker search tomcat

docker中add和copy的命令 docker add copy_centos_04

NAME:镜像名称

DESCRIPTION:镜像描述

STARS:镜像热度

OFFICIAL:是否是官方的

AUTOMATE:是否自动构建

 

docker删除镜像

Docker rmi 镜像名称、镜像id

  1. 先docker image查看镜像
  2. Docker rmi  IMAGEid

docker中add和copy的命令 docker add copy_运维_05

 

创建一个交互式容器

Docker run –it –name c1 centos /bin/bash

会进入容器的交互式界面,exit退出交互式界面。

docker中add和copy的命令 docker add copy_运维_06

查看正在运行的容器

Docker ps

 

创建守护式容器

(1)Docker run –d –-name c2 centos /bin/bash

#上面这种方式只能创建容器,但是容器不会运行

docker中add和copy的命令 docker add copy_Docker_07

(2)Docker run –itd –name c3 centos /bin/bash

#这种方式会运行

docker中add和copy的命令 docker add copy_centos_08

  1. Docker exec –it c3 /bin/bash

#进入容器

docker中add和copy的命令 docker add copy_docker中add和copy的命令_09

(4)exit退出容器后,docker ps还是可以查到该容器,容器继续运行

查看容器

Docker ps :查看正在运行的容器

Docker ps –a:查看运行过的容器(历史容器)

Docker ps –l:查看最后一次运行的容器

 

 

停止运行的容器

Docker stop c1

#停止c1容器

docker中add和copy的命令 docker add copy_docker中add和copy的命令_10

 

启动容器

Docker start c3

#启动C3容器

docker中add和copy的命令 docker add copy_docker中add和copy的命令_11

 

查看容器详细信息

Docker inspect C3

#查看c3容器详细信息,例如创建时间,id,IP,网络方式

docker中add和copy的命令 docker add copy_centos_12

 

查看容器的ip地址

Docker inspect –f=’{{.NetworkSetting.IPAddress}}’ C3

#查看C3镜像的IP

docker中add和copy的命令 docker add copy_docker_13

 

删除容器

(1)Docker rm 容器名称或ID号

#不能删除正在运行的容器

#删除镜像的用docker rmi

(2)Docker rmi `docker ps –a -q`

#删除所有容器,符号不是单引号,是~那个点

docker中add和copy的命令 docker add copy_Docker_14

 

容器与宿主机拷贝文件

(1) Docker cp 1.txt c1:/root

#将1.txt从宿主机拷贝到容器root目录下

(2)docker cp c1:/root/1.txt /opt

#将容器中的1.txt文件拷贝到宿主机的opt目录下

 

容器目录挂载

Docker run –id –-name=C4 –v /opt:/usr/local/myhtml centos

#-v后面参数是 宿主机目录:容器目录 做一个映射关系

#在宿主机opt目录下创建文件时,容器的也会自动创建个文件。

docker中add和copy的命令 docker add copy_docker_15