Docker的简介

Docker是在容器的基础上,进行了进一步的封装,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。

下面是两张对比图。



可以看到传统虚拟机技术是虚拟出一套硬件,然后再在上面运行一个完整的操作系统。然而docker的应用进程直接运行于宿主的内核,容器内没有自己的内核也没有硬件虚拟。所以更加轻便。

Dockerfile的简单编写(常用指令)

1.FROM

指定基础镜像,形如 FROM ubuntu:16.04 (容器将安装ubuntu16.04)

2.RUN

用来执行命令,形如 RUN apt-get update

3.COPY

复制文件,形如COPY flag.php /var/www/html/(COPY 本地路径 容器内路径)

可以使用通配符 * ?

4.ADD

更高级的复制文件(能自动解压缩),形如ADD ubuntu-amd64-root.tar.gz /

5.CMD

容器启动命令,推荐使用exec格式:CMD ["可执行文件", "参数1", "参数2"...] (一定要用双引号)。形如: CMD ["sh","-c","echo $HOME"]

6.ENV

设置环境变量,形如ENV NODE_VERSION 7.2.0

附一个简单dockerfile
FROM php:7.0-apache

# Meta Information
MAINTAINER Donek1 "A1oe@A1oe.com" COPY php.ini /usr/local/etc/php/php.ini
COPY index.php /var/www/html/index.php
COPY flag /flag
COPY start.sh /start.sh RUN chmod +x /start.sh
RUN rm /var/www/html/index.html CMD ["/start.sh"]

Dockerfile的使用

1.构建镜像

docker build -t nginx:v3 . (注意后面有个英文句号)

$ docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx
---e43d811ce2f4

解释:-t指定的是镜像名称nginx:v3,英文句号标识当前目录

2.查看构建完成的镜像

docker images / docker image ls

root@ubuntu:~/DockerFiles# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1.1 a473544051ce 4 seconds ago 109MB

3.使用镜像

docker run -t -i -p 8080:80 nginx

解释:-p指定端口,以上意思是容器的80端口映射到8080端口(需要用虚拟机ip:8080来访问)

4.停止容器

docker ps -a查看所有容器
docker stop name/id
停止所有container:docker stop $(docker ps -a -q)

5.删除容器

docker rm name/id(需要先停止)
或者docker rm -f id/name
删除所有container:docker rm $(docker ps -a -q)

6.删除镜像

docker rmi name/id
删除全部image:docker rmi $(docker images -q)
常见报错及解决

1.Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

端口冲突了

解决: -p 8080:80 (前一个端口为映射出的端口从80改为8080)

2.删除untagged images,也就是那些id为的image:

docker rmi -f id/name 或者
docker rmi $(docker images | grep "<none>" | awk "{print $3}")

3.删除创建时可以用id/name,不过用id更方便。

举例:image id1=asd45xxx ; image id2=4321zx6; 删除的时候可以 docker rmi 4,这样就删除了id2

附:docker-compose.yml文件的使用方法
创建:该文件目录下执行docker-compose build
运行:执行docker-compose up -d

参考文档:https://yeasy.gitbooks.io/docker_practice/image/build.html

Docker的简介以及Dockerfile编写与使用的更多相关文章

  1. Docker容器化【Dockerfile编写&&搭建与使用Docker私有仓库】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  2. docker 应用-2(Dockerfile 编写以及镜像保存提交)

    我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤 ...

  3. Docker实战(五)编写Dockerfile

    一.创建Dockerfile文件 首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件: 二.Dockerfile 基本框架 Dockerf ...

  4. Docker容器学习梳理 - Dockerfile构建镜像

    在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...

  5. Docker应用五:使用Dockerfile部署MongoDB

    在Docker容器中部署MongoDB 不做铺垫,直接开撸: 一.软件准备: docker(已安装) MongoDB-3.2.0.tgz 二.准备配置文件mongo.conf port=27017 d ...

  6. docker 实践六:dockerfile 详解

    本篇开始来学习关于 dockerfile 的知识. 注:环境为 CentOS7,docker 19.03. dockerfile 是⼀个⽂本格式的配置⽂件, ⽤户可以使⽤ dockerfile 来快速 ...

  7. docker 第六篇 dockerfile

    复习下镜像生成途径 Dockerfile 基于容器制作 什么是dockerfile: 用来构建镜像的源码,在配置文件中调用命令,这些命令是用来生成docker镜像的. dockerfile的语法格式: ...

  8. Docker 容器简介与部署

    关于Docker容器技术 参考文献:<docker 从入门到精通> Docker容器简介 Docker的构想是要实现 "Build,Ship and Run Any App,An ...

  9. docker镜像管理和dockerfile详解(8)

    docker镜像加速 docker-io先到 https://cr.console.aliyun.com/ 注册一下,登录成功后,在控制台,看左侧,有一个加速器按钮,点开找到自己的专属加速链接,我的是 ...

随机推荐

  1. PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无法连接

    问题如下: 迁移存储和主机的时候发生错误,错误如下: 出现了常规系统错误: PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无 ...

  2. python飞机大战简单实现

    小游戏飞机大战的简单代码实现: # 定义敌机类 class Enemy: def restart(self): # 重置敌机的位置和速度 self.x = random.randint(50, 400 ...

  3. Java14来了!Switch竟如此简单?Lombok也不需要了?来使用Idea配置Java14的开发环境吧!

    Java 14 在 2020.3.17 日发布正式版了,但现在很多公司还在使用 Java 7 或 Java 8,每当看到 Java 又发布新版本心里就慌得一匹.不过此版本并不是 LTS (长期支持版) ...

  4. quagga/zebra - 交叉编译(cross)和本地编译(native)

    https://github.com/dramalife/note.git AUTHOR : Dramalife@live.com Init : 2020.03.19 Update : source ...

  5. connection closed by foreign host / Permissions 0620 for '/etc/ssh/ssh_host_ed25519_key' are too open 解决方案

    发生此次故障的原因: 在文件夹授权时 错误的执行了 chmod -R 755 / 本来只想授权当前文件夹的 结果... 然后就导致xshell连不上了 懵逼... 解决方案 将权限收回: 执行: ch ...

  6. M-Renamer方法名修改器,iOS项目方法名重构,Objective-C/Swift,代码模型预判,减少误改的机率,替换速度更快,可视化操作,傻瓜式操作,一键操作,引用处自动修改,马甲包的福音

    M-Renamer M-Renamer(Method-Name-Renamer)类方法名修改器,采用链式解析头文件,代码模型预判,减少误改的机率,替换速度更快:可以解析整个项目大多数类的方法,可视化操 ...

  7. Mol Cell Proteomics. | 用于鉴定新型融合转录本及其在癌细胞中的潜在翻译产物的多功能蛋白质组基因组学工具FusionPro

    期刊:Molecular & Cellular Proteomics 发表时间:June 17, 2019 DOI:10.1074/mcp.RA119.001456 分享人:任哲 内容与观点: ...

  8. vue one

    目录 复习 Vue框架 Vue的优点 Vue的使用 vue完成简单的事件 vue操作简单样式 小结 指令 文本指令 事件指令 属性指令 条件指令 复习 """ 1.BBS ...

  9. 设计模式 - 观察者模式 (C++实现)

    #include <iostream> #include <list> #include <string> using namespace std; class I ...

  10. leetcode 945. 使数组唯一的最小增量

    题目 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 解释:经过一次 mov ...