Docker入门到实践
1.什么是Docke
1.网上有很多
2.为什么要使用Docker?

优点
更高效的利用系统资源
更快速的启动时间
一致的运行环境
持续交付和部署
更轻松的迁移
更轻松的维护和扩展
3.Docker的使用
3.1安装docker
以ubuntu16.04为例
官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/
删除旧版本
$ sudo apt-get remove docker docker-engine docker.io
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先 需要添加使用 HTTPS 传输的软件包以及 CA 证书。
$ sudo apt-get update
$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。 为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
更新 apt 软件包缓存,并安装 docker-ce:
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
# 开机启动
$ sudo systemctl enable docker
# 启动docker服务
$ sudo systemctl start docker
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安 全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需 要使用 docker 的用户加入 docker 用户组。
# 建立 docker 组:
$ sudo groupadd docker
# 将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
# 重新登录ssh
# 验证安装
docker run hello-world
3.2 配置文件:/etc/docker/daemon.json
官方文档: https://docs.docker.com/engine/reference/commandline/dockerd/#daemonconfiguration-file
# 编辑配置文件
$ sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["], # 镜像加速的地址
"insecure-registries": [""], # 非https私有仓库地址
"data-root": "/var/lib/docker" # docker安装目录
}
3.3 创建容器
docker pull nginx
docker run -d --name web -p 80:80 nginx
查看容器运行状态
docker ps
浏览器打开:http://127.0.0.1
echo "hello world" > hello.html
docker run -d --name web -p 80:80 -v `pwd`:/usr/share/nginx/html nginx
-d 后台运行
--name 指定容器名
-p 映射端口
-v 映射数据卷
3.4 镜像(Image)和容器(Container)的关系
镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等。
举例:
镜像 容器
类class Apple 对象 new Apple()
安装盘ISO 虚拟机
3.5创建自己的镜像
官方文档:https://docs.docker.com/develop/develop-images/dockerfile_bestpractices/
vi Dockerfile
FROM nginx RUN
echo "hello world" > /usr/share/nginx/html/hello.html
docker build -t my-web:1.0 . (注意这个点,必须有)
查看镜像
docker images
启动容器
docker run -d --name web -p 80:80 my-web:1.0
3.5.1 环境变量
vi start.sh
echo "hello world ${MY_NUM}" > /usr/share/nginx/html/hello.html
nginx -g "daemon off;"
vi Dockerfile
FROM nginx
ENV MY_NUM="100"
ADD start.sh /start.sh
CMD sh /start.sh
启动容器
docker build -t my-web:2.0 . (注意这个点,必须有)
# 无环境变量运行
docker run -d --name web -p 80:80 my-web:2.0
# 有环境变量运行
docker run -d --name web -p 80:80 -e MY_NUM=200 my-web:2.0
# 基础镜像
FROM nginx
# 预置环境变量
ENV MY_NUM="100“
# 制作镜像的操作,尽量减少RUN的个数,可以有效减少镜像大小
RUN echo "hello world" > /usr/share/nginx/html/hello1.html
# 添加制作镜像的文件
ADD start.sh /start.sh
# 容器启动命令
# 注意区分CMD和RUN的区别
#CMD ["nginx", "-g", "daemon off;"]
#CMD nginx -g "daemon off;“
CMD sh /start.sh
FROM nginx
RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file
RUN rm -f /root/100MB.file
#RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file && rm -f /root/100MB.file
docker build -t test:1.0 .
docker build -t test:2.0 .
2.docker-compose
官方文档: https://docs.docker.com/compose/install/ https://docs.docker.com/compose/compose-file/
官网安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/dockercompose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
公司内网安装
$ sudo curl -L http://ftp.fzyun.io/lib/docker-compose/1.23.1/docker-composeLinux-x86_64 -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
docker run -d --name web -p 80:80 -e MY_NUM=200 \ -v `pwd`/web:/usr/share/nginx/html/ my-web:2.0
vi docker-compose.yml
version: "3.5"
services:
web:
image: nginx
restart: always
ports: - "80:80"
volumes:
- ./web:/usr/share/nginx/html/
environment:
MY_NUM: 200
多服务样例:
version: "3.5"
services:
web:
image: nginx:1.15.12-alpine
restart: always
ports: - "80:80"
mysql:
image: mysql:5.7
restart: always
ports: - “3306:3306"
environment: MYSQL_ROOT_PASSWORD: ***(root用户密码)
Docker入门到实践的更多相关文章
- 《Docker 入门与实践》 已经出版了~欢迎有须要的朋友关注。
在云计算时代.开发人员将应用转移到云上已经攻克了硬件管理的问题,然而软件配置和管理相关的问题依旧存在. Docker的出现正好能帮助软件开发人员开阔思路.尝试新的软件管理方法来解决问题. 通过掌握Do ...
- Docker 入门到实践(四)Docker 使用镜像
一.获取镜像 Docker Hub 上有大量的高质量的镜像让我们获取,命令为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 具体的选项可以 ...
- Docker 入门到实践(三)Docker 安装
注意:不要在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker. 一.准备工作 系统要求 Docker CE 支持一下版本的 Ubuntu 操作系统 Cosmic 18 ...
- Docker入门与实践
一.Docker介绍 docker官网:https://www.docker.com/ Docker hub地址: https://hub.docker.com/ 1.基本概念 Docker ...
- Docker入门与实践之 Dockerfile 语法详解
一.Dockerfile 概述 Dockerfile是docker程序的解释脚本文件,Dockerfile 是一条一条的指令,Docker程序将dockerfile中的一条条指令编译成Linux可执行 ...
- Docker入门与实践之 docker安装与了解
一.Docker 概述 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...
- Docker入门到实践——简单操作
1.对比传统虚拟机总结 特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般几十个 2.基本概念 Docker包括三个基 ...
- Docker 入门实践
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...
- Docker 从入门到实践(一)Docker 简介
读前须知:本教程大部分都是[Docker 从入门到实践 ]一书的知识,有兴趣可以直接观看书籍.同时,借鉴书籍的知识,如有侵权,请告知我,我会删除处理.谢谢. 一.什么是 Docker? Docker ...
随机推荐
- Tomcat系列(11)——Tomcat 部署web应用的4种方法
核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的man ...
- Tomcat系列(5)——Tomcat配置详细部分
Tomcat的架构图 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层 ...
- crm 一级菜单排序,二级菜单选中并且展开,非菜单权限的归属,权限粒度控制到按钮级别
排序 /rbac/templatetags/rbac.py from django import template from django.conf import settings import re ...
- clickhouse的使用和技巧,仅个人
centos 安装clickhouse curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script. ...
- 一个网站SQL注入的案例
网站的页面提交参数做了md5转换,而且参数会带入两个SQL语句中执行. 注入是肯定存在的,但是SQLMAP怎么都跑不出来(可能原因是其中有个SQL语句总是报错). 尝试手工,发现 order by 报 ...
- CSS3 Background-clip
上一节在<CSS3 background-size>详细的介绍了CSS3为background新增属性之一,今天和大家一起来学习CSS3中有关于Background的第二新属性Backgr ...
- 肺结节CT影像特征提取(五)——肺结节CT影像ROI区域灰度直方图及其图形化
在博客肺结节CT影像特征提取中,已经实现了肺结节的灰度.纹理和形态特征的提取.但是,对于进一步了解ROI区域像素值或者说CT值的分布来说,还存在一定的不足,不能够很好的显示ROI区域. 因此,本文将进 ...
- node命令行工具—cf-cli
音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...
- pwnable.tw calc
题目代码量比较大(对于菜鸡我来说orz),找了很久才发现一个能利用的漏洞 运行之发现是一个计算器的程序,简单测试下发现当输入的操作数超过10位时会有一个整型溢出 这里调试了一下发现是printf(&q ...
- Elasticsearch一些使用笔记(持续更新)
这篇博客记录这一些运维ES的一些经验. 1.节点磁盘使用率过高,导致ES集群shard无法分配,丢失数据? 有两个配置,分配副本的时候 参数名称 默认值 含义 cluster.routing.allo ...