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 ...
随机推荐
- linux下python安装
下载包: wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.gz 解压安装: tar -zvxf Python-3.6.3. ...
- 【优秀的图片后期编辑工具】Luminar 3.1 for Mac
[简介] 今天和大家分享最新的 Luminar for Mac 3.1 版本,支持中文界面,Luminar是一款Mac上优秀的图片后期处理工具,功能类似 Photoshop Lightroom 等软 ...
- ant 执行jmeter
构建-invoke ant -properties jmeter.home=/home/userapp/apps/apache-jmeter-5.0report.title=kyh_register_ ...
- python之路(8)常用模块
目录 os模块 sys模块 json模块 pickle模块 xml模块 re模块 logging模块 configparser模块 hashlib模块 time模块 random模块 subproce ...
- 实验二 Java面向对象程序设计 20175301李锦然实验报告
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- System系统类
System系统类 : 主要的作用是用于获取系统的一个参数. System类需要掌握的方法: arraycopy(Object src, int srcPos, Object dest, int de ...
- 如何使用门罗币远程节点remote node?
当使用门罗币钱包的时候,都需要启动monerod,用来同步门罗币区块. 但是因为区块体积目前已经超过40G了, 所以需要花费很多天时间才能把数据同步完. 这对于使用门罗币非常的不方便. 远程节点rem ...
- Bootstrap常用样板
http://blog.csdn.net/Star_449/article/details/76098292 1.图片样式 1.1..img-responsive: 直接为图片添加该样式,可以实现响应 ...
- 解决vue解析出现闪烁
原因: 在使用vuejs.angularjs开发时,经常会遇见在如Chrome这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是模块(div)的闪烁.对于这个问题由于Jav ...
- ‘Host’ is not allowed to connect to this mysql server
‘Host’ is not allowed to connect to this mysql server mysql 数据库不允许远程连接 方法一:修改 host 表 进入mysql数据库,选择m ...