Docker相关

Docker是什么:

Docker是使用google公司推出的go语言进行开发实现的
docker是linux容器的一种封装,提供简单易用的容器接口。是现在最流行的linux容器的解决方案
docker将应用程序与程序的依赖,打包在一个文件里,运行这个文件就会生成一个虚拟容器。运行程序在虚拟容器里,如同真室物理机上运行一样,有了docker就不用担心环境问题了。

应用场景:

web应用的自动化打包和发布
自动化的测试和持续集成,发布
在服务型的环境中部署和调整数据库或其他应用

docker的三大概念

镜像 image
docker 镜像是一个特殊的文件系统,除了提供容器运行时需要的程序、库、资源配置等文件外,还包含了一些运行时准备的参数。镜像不包含任何动态数据,内容在构建之后不会改变。分层存储
容器 container
镜像和容器的关系,就像是类和实例,镜像是静态的定义,容器是镜像运行的实体,容器可以被创建、启动、删除、停止、暂停等等
仓库 repository
镜像在构建完成后,可以很容易的在当前宿主机上运行,如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务

docker容器的优势

1.更有效的利用资源
2.更快速的启动时间
3.一致的运行环境
4.持续交付和部署
5.更轻松的迁移

相关命令

安装docker
yum install docker
启动docker
systemctl start docker
systemctl status docker

查看docker版本
docker version

镜像加速,重启docker
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

docker search hello-docker //搜索hello-docker的镜像
docker pull hello-world //获取hello-world镜像
docker run hello-world //运行镜像,产生一个容器实例
docker image ls (docker images) //查看本地所有镜像
docker ps -a //查看所有运行过的容器
docker rm 容器ID //删除容器记录
docker rmi hello-world //删除这个镜像

1.基于镜像新建一个容器并启动
后台运行一个docker
#d 后台运行容器
/bin/sh 指定使用centos的bash解释器
-c 运行一段shell命令
“while true; do echo 正在运行; sleep 1; done” 在linux后台,每秒中打印一次正在运行
docker run -d centos /bin/sh “while true; do echo 正在运行; sleep 1; done”

2.启动一个bash终端,允许用户进行交互
–name 给容器定义一个名称
-i 让容器的标准输入保持打开
-t 让docker分配一个伪终端,并绑定到容器的标准输入上
/bin/bash 指定docker容器,用shell解释器交互
docker run --name mydocker -it centos /bin/bash

当利用docker run来创建容器时,docker在后台运行步骤如下:

1.检查本地是否存在指定的镜像,不存在就从共有仓库下载
2.利用镜像创建并启动一个容器
3.分配一个文件系统,并在只读的镜像层外面挂一层可读写层
4.从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
5.从地址配置一个ip地址给容器
6.执行用户指定的应用程序

将一个停止状态的容器重新启动

先查询记录
docker ps -a
再启动这个容器
docker start 容器id
进入容器的交互式界面
docker exec -it 容器id /bin/bash

提交创建自定义

1.进入交互式的centos容器中
docker run -it centos
2.在当前的容器中,安装一个vim
yum install -y vim
3.安装好vim后 exit退出容器
exit
4.查看安装好的vim放入同期记录
docker container ls -a
5.提交这个容器,创建新的image
docker commit 容器的id 新image的名字
6.查看镜像文件
docker images

发布到仓库

docker 提供了一个类似github的仓库docker hub
1.注册docker id后 在linux中登录docker hub(网址:https://hub.docker.com/signup?next=%2F%3Fref%3Dlogin)
docker login
#如果你的镜像名字不对需要修改,修改成用户名/仓库名
docker tag image里面名称 用户名/仓库名
#推送docker image到docker hub
docker push 用户名/仓库名

外部访问容器
docker run -d -p 9090:8000 18537174480/django2.1.4 python -m SimpleHTTPServer 8000
-d 后台运行
-p参数是指定映射的端口第一个参数是宿主机端口,第二个端口是容器内启动的服务的端口

利用docker定制镜像、

镜像是容器的基础,每次执行docker,run的时候都会定制那个镜像作为容器运行的基础,当镜像无法满足我们的需求的时候,就得自己定制镜像。
镜像定制就是定制每一层所添加的配置、文件。如果可以把每一层修改、安装、构建操作的命令都写入到一个脚本,用脚本来构建、定制镜像,这个脚本就是dockerfile
dockerfile是一个文本文件,其中内容包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建

执行 vim app.py
app.py中配置如下:
from flask import Flask
app = Flask(name)
@app.route("/")
def hello():
return “hello docker”
if name == “main”:
app.run(host=“0.0.0.0”, port=5000)

在app.py在的目录下执行vim Dockerfile
Dockerfile中配置如下:
FROM python:3.6
LABEL maintainer = “cosmic”
RUN pip install flask
COPY app.py /app/
WORKDIR /app
EXPOSE 5000(和app.py中的port要相同)
CMD [“python”, “app.py”]

docker build -t 镜像名(a/b的形式) .
docker run -d -p 7777:5000 镜像名(a/b的形式)
运行之前先在服务器上开放7777端口

dockerfile指令

FROM 指定基础镜像
定制镜像,一定是以一个镜像为基础,在其上进行定制。FROM就是指定基础镜像,因此一个Dockerfile中FROM是必备的指令,并且是第一条指令。
除了基础镜像以外,Docker还存在一种特殊的镜像,名为scratch。这个镜像是虚拟的概念,并不是实际存在的,它表示一个空白的镜像。

RUN 执行命令
RUN 指令是用来执行命令行命令的。有两种格式
1.shell格式:RUN <命令> 就像直接在命令行输入的命令一样。
2.exec格式:RUN [“可执行文件”, “参数1”…]
[“python”, “manage.py”, “runserver”]
3.dockerfile中的每一个指令都会建立一层,每一个run命令的行为就像手工建立镜像的过程;先建立一层。在其上执行这些命令,执行结束后commit这一层的修改构成新景象,所以要避免多行的run命令
构建最大一百二十多层,正确的写法:RUN pip install flask && pip install django && wget http://python3.6.tar.gz && tar -zx python3.6 tar.gz /roots/home/py && ./configure make makeinstall

使用docker build命令进行镜像构建
docker build 【选项】<构建的镜像> .
点表示当前目录,dockerfile就在当前目录

COPY 复制文件
COPY 源路径 目标路径
COPY app.py /app

WORKDIR 指定工作目录 /root
EXPOSE 声明端口 非必须

CMD 容器启动命令
CMD 命令
推荐 CMD [“可执行命令”, “参数”]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值