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 ...
随机推荐
- 编写高质量的Python代码系列(六)之内置模块
Python预装了许多写程序时会用到的重要模块.这些标准软件包与通常意义上的Python语言联系得非常精密,我们可以将其当成语言规范的一部分.本节将会讲解基本的内置模块. 第四十二条:用functoo ...
- shiro 介绍和基本使用
一.什么是shiro 它是一个功能强大且易于使用的Java安全框架,可以执行身份验证.授权.加密和会话管理.使用Shiro易于理解的API,您可以快速且轻松地保护任何应用程序——从最小的移动应用程序到 ...
- Ubuntu16.04的图形化界面无法启动问题
昨晚在 Ubuntu 下试图安装笔记本触控板的驱动的时候,突然 Ubuntu 的图形化界面不见了,尝试了 Ctrl + Alt + F1.F2.F3...无果,又在一些博客的指导下尝试在命令行使用 s ...
- P5283 [十二省联考2019]异或粽子
考场上想到了没打完,细节思路还是不是很优,我原先的想法是每一次找完后标记那个点,下次再继续找(并不是这个意思,说不清楚)但实际上和平衡树一样加个大小就很好写了 #include<bits/std ...
- 第30月第11天 Xcode 9.0中新增的API版本检查@available
1.Xcode 9.0中新增的API版本检查@available https://www.jianshu.com/p/0a94baa6c3dd https://www.jianshu.com/p/b8 ...
- 自编译Apache Spark2.3.3支持CDH5.16.1
1 下载源代码文件 https://archive.apache.org/dist/spark/spark-2.3.3/ 2 解压后导入编辑器,修改依赖的Hadoop版本,下面截图是修改后的,要看自己 ...
- raw_input与input
raw_input 不管用户输入的是什么,最后打印的类型都会是str字符串类型 input 会根据用户的输入变换成相应的类型,但是需要注意的是我们用户在输入字符或者字符串的时候,需要给他们加上双引号, ...
- word20170108逛景点 Sightseeing有用的词和句子
有用的词: sights and attractions: 景点 ticket booth: 售票处 will call ticket: 网络售票 guided tour: 带导游的游览 audio ...
- sonar6.7.2启动报错
sonar6.7.2启动报错:错误信息如下: es.log java.lang.RuntimeException: can not run elasticsearch as rootsonar.log ...
- 清北学堂2019NOIP提高储备营DAY1
今天是第二次培训的第一天,关于NOIP的基础算法,主要内容如下: $1.枚举 $2.搜索 $3.贪心 $1.枚举: •定义: 枚举又叫做穷举,是一种基础的算法,其思路主要是:从问题中有可能的解集中一一 ...