Docker不完全使用指南
Docker官方文档:https://docs.docker.com/
神马是Docker?
Docker可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署。
Docker通常用于如下场景:
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的
OpenShift
或Cloud Foundry
平台来搭建自己的PaaS
环境。
Docker与虚拟机的区别
与虚拟机相比,它以一种轻量级的方式实现了运行空间的隔离。
如果物理机是一幢住宅楼,虚拟机就是大楼中的一户户套房,而容器技术就是套房里的一个个隔断。
不难理解,Docker 作为一种隔断,它并不能基于一种内核(Linux)提供另一种内核(Windows)的虚拟化运行环境。
所以,基于 Linux 的 Docker 是不支持运行 Windows 应用的。
但是后来Windows也意识到了容器粒度的重要性,于2014年宣布与Docker合作,2017年10月正式发布Windows容器。
使用Docker for Windows
切换到 Windows Container
功能,之后的操作也是基于Docker客户端操作的。
安装Docker
网上搜索一下即可,很简单
以Centos7
为例
yum install -y yum-utils # yum-config-manager需要用这个包
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #安装docker官方源
yum makecache
yum -y install docker-ce
systemctl start docker
镜像加速,使用国内源
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
systemctl restart docker
Docker镜像命令
docker search ubuntu #查找镜像
docker pull ubuntu #拉取镜像(就是下载)
docker images #查看Docker镜像
docker rmi -f id #删除镜像,不加ID全部删除
docker run -it -d --name ubuntu_wintrysec -p 8088:80 ubuntu #运行Docker镜像
#-d参数为后台运行,--name参数为自定义容器名,
#-p参数为指定端口映射、后者为容器的端口
#成功后台运行后会返回一个容器的id,只需要记住前两位即可
Docker容器命令
docker ps #查看所有启动的容器(若查看所有的容器则添加-a参数即可)
docker inspect id #查看容器信息
docker stats id #查看Docker状态
docker exec -it id /bin/bash #进入一个正在运行的容器的shell
cat /etc/issue #查看ubuntu版本
exit #退出容器
docker stop id #停止容器运行
docker ps -a #查看所有的容器,包括已经关闭的
docker rm id #删除容器
打包docker
虽然制作了好了容器,但是只能在本机使用而不能在其他机器上使用,这时就可以打包容器
用-o输出,ls 查看本地文件,这样只需将该tar文件发给其他主机,解压就可以使用镜像了
docker commit id ubuntu_wintrysec:1.0docker save -o ubuntu_wintrysec.tar ubuntu_wintrysec:1.0
Dockerfile的使用(构建镜像)
Dockerfile
用来创建一个自定义的image,包含了用户指定的软件依赖等
用于从无到有的构建镜像
https://blog.csdn.net/wsscy2004/article/details/25878223
Docker compose(启动服务)
docker compose
是一个整合发布应用的利器(官方安装手册)
默认的模板文件是 docker-compose.yml
其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile
,除非有registry)来自动构建
不想部署私有registry
又不想让Dockerfile
存在的话,可以使用官方的Docker Hub
, 然后使用daocloud加速访问。
Centos7
安装docker-compose
首先确认已经安装好了python和pip(Centos7 安装python3.8和pip)
pip install docker-compose -i https://pypi.mirrors.ustc.edu.cn/simple/
简单的docker-compose.yml
示例讲解
Dockerfile的情况下,不用buildversion: '3'
services:
discuz: #web服务,dz论坛应用
image: vulhub/discuz:7.2 #镜像,这个镜像是放到dockerhub上的
depends_on: #依赖db服务
- db
ports:
- "8080:80" #端口映射,前边的是要访问的端口,后边的是容器中服务的端口
db:
image: mysql:5.5
environment: #可选环境配置,mysql:5.5镜像有这个配置
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: discuz
#这个是在没有Dockerfile的情况下,不用build
扩展阅读
Docker不完全使用指南的更多相关文章
- Docker技术快速精通指南
doctor专业网站:http://www.dockerinfo.net/ Docker中文文档 csdn 的docker专栏: Docker技术快速精通指南
- CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- Docker生产环境实践指南
技术栈:1. 构建系统2. 镜像仓库3. 宿主机管理4. 配置管理5. 部署6. 编排7. 日志8. 监控 镜像:1. 如果用户像往常一样运行包安装命令,这些永远也用不上的缓存包文件将会永远地成为镜像 ...
- Azure支持docker简介以及使用指南
Docker 是一个开源的项目,主要的特点是能将应用程序包装在一个 LXC (Linux Container) 容器中,当这些应用被包装进容器后,部署.迁移都变得更为简单.与传统的虚拟化技术相比,虚拟 ...
- Docker Compose 入门使用指南
Compose is a tool for defining and running multi-container Docker applications. With Compose, you us ...
- 架构师分享 Docker 新手入门完全指南
来源:架构师小秘圈 ID:seexmq Docker 最初 dotCloud 公司内部的一个业余项目 Docker 基于 Go 语言 Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案 Do ...
- Ubuntu+docker+jenkins安装详细指南
最近项目上开始实行自动化测试,避免不了与jenkins等持续集成工具打交道,今天就给大家分享一下有关jenkins的简单安装和使用 1,准备环境 (1)ubuntu系统 (2)docker (3)je ...
- Docker 代理脱坑指南
Docker 代理配置 由于公司 Lab 服务器无法正常访问公网,想要下载一些外部依赖包需要配置公司的内部代理.Docker 也是同理,想要访问公网需要配置一定的代理. Docker 代理分为两种,一 ...
- 关于docker
摘要: 最近很多阿里内部的同学和客户私信来咨询如何学习 Docker 技术.为此,我们列了一个路线图供大家学习Docker和阿里云容器服务.这个列表包含了一些社区的优秀资料和我们的原创文章.我们会随着 ...
随机推荐
- sqlite3-python
官网资料 https://sqlite.org/lang_createtable.html 操作参考: https://www.runoob.com/sqlite/sqlite-insert.html ...
- Java进阶知识09 Hibernate一对多单向关联(Annotation+XML实现)
1.Annotation 注解版 1.1.在一的一方加Set 1.2.创建Customer类和Order类 package com.shore.model; import java.util.Hash ...
- 「SPOJ TTM 」To the moon「标记永久化」
题意 概括为主席树区间加区间询问 题解 记录一下标记永久化的方法.每个点存add和sum两个标记,表示这个区间整个加多少,区间和是多少(这个区间和不包括祖先结点区间加) 然后区间加的时候,给路上每结点 ...
- jQuery系列(十):事件对象
1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. (1)什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给 ...
- OSI七层参考模型
一.OSI七层模型简述 二.每层的作用 三.数据封装的过程 四.数据解封的过程
- Selenium定位class包含空格的元素-复合class节点
在HTML中, 节点有三种常见属性, 分别是id, name和class, 其中class是一个特殊的属性, 支持多个类名, 以空格隔开, 如下图所示: 你是否注意到, 为什么selenium中的fi ...
- 如何利用新浪官方的短网址API接口实现T.cn短链接的压缩生成
短网址的实现原理就是有一个数据表会配置文件将短网址和实际网址进行对应,当请求某个短网址时,程序跳转到对应的实际网址上去,从而实现网址的访问.目前国内最稳定最好用的是新浪T.cn短链接. 之前新浪提供了 ...
- maven坐标及依赖范围的学习(1)
首先,我们先了解什么是maven的坐标(重中之重): 在这里我们可以看到那三个红色的行,基本是pom.xml中出现的最多的配置 例如这个配置:这里我们可以看到我们这个项目的pom文件中,他对名 ...
- js将正整数转化为二进制
//正整数转化为二进制 function divideBy2(decNumber) { var decStack = []; var rem; var decString = ''; while (d ...
- 第10组Alpha冲刺(3/4)
队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 继续学习Android studio和Java 制作登录注册界面前端 展示GitHub当日代码/文档签入 ...