Docker的简介以及Dockerfile编写与使用
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编写与使用的更多相关文章
- Docker容器化【Dockerfile编写&&搭建与使用Docker私有仓库】
# Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...
- docker 应用-2(Dockerfile 编写以及镜像保存提交)
我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤 ...
- Docker实战(五)编写Dockerfile
一.创建Dockerfile文件 首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件: 二.Dockerfile 基本框架 Dockerf ...
- Docker容器学习梳理 - Dockerfile构建镜像
在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...
- Docker应用五:使用Dockerfile部署MongoDB
在Docker容器中部署MongoDB 不做铺垫,直接开撸: 一.软件准备: docker(已安装) MongoDB-3.2.0.tgz 二.准备配置文件mongo.conf port=27017 d ...
- docker 实践六:dockerfile 详解
本篇开始来学习关于 dockerfile 的知识. 注:环境为 CentOS7,docker 19.03. dockerfile 是⼀个⽂本格式的配置⽂件, ⽤户可以使⽤ dockerfile 来快速 ...
- docker 第六篇 dockerfile
复习下镜像生成途径 Dockerfile 基于容器制作 什么是dockerfile: 用来构建镜像的源码,在配置文件中调用命令,这些命令是用来生成docker镜像的. dockerfile的语法格式: ...
- Docker 容器简介与部署
关于Docker容器技术 参考文献:<docker 从入门到精通> Docker容器简介 Docker的构想是要实现 "Build,Ship and Run Any App,An ...
- docker镜像管理和dockerfile详解(8)
docker镜像加速 docker-io先到 https://cr.console.aliyun.com/ 注册一下,登录成功后,在控制台,看左侧,有一个加速器按钮,点开找到自己的专属加速链接,我的是 ...
随机推荐
- 这些MongoDB的隐藏操作你真的都掌握了吗?反正我是刚知道
背景 最近公司系统还原用户时偶尔会出现部分用户信息未还原成功的问题,最为开发人员,最头疼的不是代码存在bug,而是测试发现了bug,但一旦我去重现,它就不见了.Are you kidding me? ...
- 使用JavaScript策略模式校验表单
表单校验 Web项目中,登录,注册等等功能都需要表单提交,当把用户的数据提交给后台之前,前端一般要做一些力所能及的校验,比如是否填写,填写的长度,密码是否符合规范等等,前端校验可以避免提交不合规范的表 ...
- Windows Server 2012 R2 域证书服务搭建
网管大叔说要给每个人颁发一个证书,这个证书很耗电 1.在服务器管理器中添加角色和功能 下一步 下一步 勾选Active Directory证书服务 下一步 下一步 勾选证书颁发机构,证书颁发机构Web ...
- Java对接百度智能云人脸识别
------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...
- 创建和存储 cookie
在这个例子中我们要创建一个存储访问者名字的 cookie.当访问者首次访问网站时,他们会被要求填写姓名.名字会存储于 cookie 中.当访问者再次访问网站时,他们就会收到欢迎词. 首先,我们会创建一 ...
- 分享macOS平台好用的视频分割、合并视频、提取音频、分离音频、音频转码的工具CCVideo
CCVideo 是一款运行在macOS上可分割视频(可多段分割).合并视频.提取音频.分离音频.音频转码的工具,操作方便,只需简单几步,便可轻松完成. 下载地址
- git常用命令学习配详细说明
原文链接 把当前目录变成Git可以管理的仓库 git init 查看仓库当前的状态 git status 添加新/变动文件 git add <文件名> // 添加某个新文件(目录) git ...
- SSL/TLS 安全测试
本文介绍了使用半自动化工具执行SSL&TLS安全性评估的过程,以及如何使用手动及工具的测试方法验证并发现问题.目的是优化TLS和SSL安全测试流程,帮助信息安全顾问在渗透测试时在TLS / S ...
- settings插拔式源码
创建一个文件夹notify __init__.py import settings import importlib def send_all(content): for path_str in se ...
- vue one
目录 复习 Vue框架 Vue的优点 Vue的使用 vue完成简单的事件 vue操作简单样式 小结 指令 文本指令 事件指令 属性指令 条件指令 复习 """ 1.BBS ...