容器、镜像

2020-07-23  本文已影响0人  杨健kimyeung

容器技术VS虚拟机技术

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

底层区别(隔离)

容器应用层(进程级别)

虚拟机是物理资源层的(系统级别)

应用场景

安装

运行测试(已nginx为例)

下载镜像

docker  pull  nginx

运行容器

docker  -p 80:80 -d nginx

说明

基本概念

概要

镜像 (image)

容器(Container)

仓库(Repository)

镜像

一个镜像要一个组文件组成,轻量级,可独立执行的软件,用来保存系统的配置文件,应用,

只能读

运行tomcat

  • 运行的环境(os系统,jdk)
  • 依赖库
  • 配置文件

容器

进行运行产生容器

仓库

存放镜像的

镜像

概要

  • 下载镜像
  • 查看本地镜像
  • 删除本地镜像

下载镜像

语法格式

docker  pull  镜像名:[版本号] 

说明

版本号: 如果不写表示下载最新的版本 latest

栗子

docker  pull   mysql:8.0.17 
docker  pull   nginx

查看本地镜像

语法格式

docker images 

栗子

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              0901fa9da894        11 days ago         132MB
mysql               8.0.17              b8fd9553f1f0        10 months ago       445MB

删除本地镜像

语法格式

docker  rmi [选项] 镜像ID | 镜像名 | 长ID

选项

选项 说明
-f 强制删除

栗子

先删容器  在删除镜像
#  通过名称删除镜像
docker  rmi -f nginx:
# 通过id删除镜像
docker  rmi  0901fa9da894
#  指定版本的删除
docker  rmi mysql:8.0.17 

其它命令

删除无用的镜像

docker rmi  | grep '<none>' |   awk '{print $3}' | xargs 

删除没有使用的镜像

docker  rmi  'docker images -q'

容器操作

启动容器

语法格式

#  新建容器并且启动容器
docker  run [选项]   镜像名[:版本号] 命令 参数

#  启动停止的容器
docker  start  容器的id或者容器的名称

选项

选项 说明
-d 后台运行 返回容器的长ID
--name='容器名称' 给容器七名字 ,如果不给,系统会默认给容器起名称
-p 映射端口 左边宿主机的端口:右边容器的端口
-v 宿主机的目录:容器的目录 数据卷,将容器中目录映射到宿主机

备注:

run 如果本地没有该镜像,直接从仓库下载

栗子

docker run  --name='nginx-container' -p 80:80 -d nginx

进入容器

进入容器

说明

使用exec命令进入容器

语法格式

docker  exec [选项]  容器的名称或者ID  参数 /bin/sh   /bin/bash

选项

选项 说明
-it 使用交互和命令的方式进入容器

栗子

root@iZbp11fwf4mzq0vmztatbiZ:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
6e6d703e0786        nginx               "/docker-entrypoint.…"   23 minutes ago      Up 23 minutes       0.0.0.0:80->80/tcp   nginx-container

docker exec  -it 6e6d703e0786  /bin/bash

查看容器

说明

查看所有运行的或者停止的容器

默认情况下查看正在运行的容器

语法格式

docker ps [选项]

选项

选项 说明
-a 显示所有的容器的

停止容器

语法格式

docker  stop  容器的名称或者容器的ID

栗子

root@iZbp11fwf4mzq0vmztatbiZ:~# docker  ps
CONTAINER ID      ...       PORTS                NAMES
6e6d703e0786                0.0.0.0:80->80/tcp   nginx-container

docker  stop  6e6d703e0786
docker  stop  nginx-containe

删除容器

语法格式

docker rm [选项] 容器的名称或者ID ... 容器名称或者容器ID
选项 说明
-f 强制删除(如果容器在运行,停止容器,在删除容器)

栗子

# 删除正在运行的容器
docker stop 6e6d703e0786
docker rm 6e6d703e0786 
 #  等价于
docker rm -f 6e6d703e0786

删除所有容器

docker  rm -f 'docker ps -aq'

Dockerfile

原生的定制镜像

缺点

Dockerfile指令

FROM

说明

指定基础镜像 并且必须是第一条指令

指令格式

FROM 镜像名称[:指定版本号]

栗子

FROM  ubuntu:18.0.4
或者
FROM  nginx

RUN

说明

构建镜像时执行的命令

语法格式

shell 格式

RUN 基础命令

exec格式(了解)

RUN ["命令","参数" ,"参数",...]
shell 格式
RUN  apt install vim
# exec 格式
RUN ["apt","install" ,"vim"]

说明

影响制作容器的大小,一条RUN命令就是构建一层

命令

docker build -t 镜像的名称 指定Dockerfile的名称

-f /绝对路径/Dockerfile的名称

栗子

创建Dockefile文件

FROM  nginx
RUN   echo '<h1> 2002班 <h1>'  >  /usr/share/nginx/html/index.html

构建镜像

docker build -t zw/nginx-19 ./

查看镜像是否构建成功

docker images

运行镜像

docker run  -p 80:80 -d  zw/nginx-19

docker-compose

常用的软件

上一篇 下一篇

猜你喜欢

热点阅读