美文网首页
3 Docker的镜像与容器

3 Docker的镜像与容器

作者: 超燃 | 来源:发表于2020-03-07 04:53 被阅读0次

目标

名词

  • CLI - command-line interface,命令行界面
  • Rest API -
  • 内核空间 -
  • 用户空间 -
  • Linux Kernel -

常用命令

命令 说明
Image
# docker image ls 列出本地image
# docker pull ubuntu:14.04 从docker hub拉取ubuntu:14.04
# docker build -t ccsgao/hello-world . 通过当前目录下的docker file构建一个image
# docker history acca11e86101 查看image的分层
# docker container rm b2bf98 删除某个container
# docker container commit centos ccsgao/centos-vim container Build 一个image
# docker login :-
# docker push push an image or a repository to a registry
# docker run hello-world 通过image hello-world启动一个container
# docker run -it centos bin/bash 交互式运行
# docker run -d ccsgao/flask-hello-world 后台运行
# docker run -d -name=demo ccsgao/flask-hello-world 后台运行,且指定name=demo
container :-
# docker container ls 列出当前正在运行的container
# docker container ls -a 列出所有container,包括已经退出的
# docker container ls -aq -all quiet,只显示id
# docker rm #(docker container ls -aq) 列出所有container,包括已经退出的
# docker ps -a list containers
# docker exec -it d616949073b0 /bin/bash 进入container内部
# docker stop 11a767d 停止某个container
# docker start 11a767d 启动某个container
# docker inspect 11a767d 检查,return low-level info on dk object
# docker logs 11a767d fetch the logs of a container

1 Docker架构与底层技术

Docker Platform

  • Docker提供了一个开发、打包、运行App的平台
  • 把App和顶层infrastructure隔离开
application
Docker Engine
infrastructure(physical/virtual)

Docker Engine

  • 后台进程 docker daemon
  • Rest API Server
  • CLI接口(接口)
Docker Engine

Docker Architecture

Docker Architecture

底层技术支持

底层技术支持

2 Docker Image概述

什么是Image

什么是Image

Image的获取

Build from Dockerfile Pull from Registry

3 使用Docker File DIY 一个BaseImage

  1. 编写C语言小程序 hello docker
  2. 编译
  3. 编写Docker file
  4. 构建image
  5. 运行

4 什么是Container

什么是Container
  1. 体会container是通过image创建的
  2. 体会container是可读写的

5 构建自己的Docker镜像

  • 不提倡直接用container commit 来创建 image
  • 提倡使用 docker file 来 build 一个 image
  • Image内部使用临时container来commit

6 Dockerfile 语法梳理及最佳实践

参考资料

  • Dockerfile reference
  • docke-library

尽量使用官方Image作为Base Image

From

Metadata不可少,Label类似代码的注释

Label

每条Run都会生成新的一层,使用 && \ 合并

Run
Run

Workdir,类似CD;绝对目录更清晰,不易出错

Workdir
Workdir

Add&Copy 将本地文件添加到image中

Add&Copy
Add&Copy

Env,设定环境变量,尽量使用Env增加可维护性

Env

EXPOSE

7 run vs cmd vs entrypoint

image.png

shell和exec格式的优劣对比

shell = 就像在终端敲指令,exec = 特定格式,区分命令和参数


image.png
image.png

entrypoint使用的较多

image.png

Dockerfile

FROM centos
ENV name Docker
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["/bin/bash","docker-entrypoint.sh"]

docker-entrypoint.sh

echo "hello $name"
$ docker build -t xxx/entrypoint-sh .
$ docker run xxx/entrypoint-sh

8 镜像发布Docker Hub【Pending】

9 Dockerfile 实战

  1. 创建Dockerfile
$ vim Dockerfile
FROM python:2.7
LABEL maintainer = "ccsgao<ccsgao@qq.com>"
RUN pip install flask
COPY app.py /app/
WORKDIR /app
EXPOSE 5000
CMD ["python","app.py"]
  1. 准备程序
$vim app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return "hello docker"
if __name__ == '__main__'
    app.run()
  1. 构建image并运行
# docker build -t ccsgao/flask-hello-world .
# docker run -d ccsgao/flask-hello-world

10 容器的操作 【合并至常用命令】

11 dockerfile实战2

# yum install -y stress
# stress --help
# stress --vm 1 --verbose #分配1个worker(默认占内存256M),并打印详情
# stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s #官方示例

推荐用法示例

  • ENTRYPOINT 执行命令
  • CMD 接收命令行参数
# FROM ubuntu
# RUN apt-get update && apt-get install -y stress
# ENTRYPOINT ["/usr/bin/stress"]
# CMD []
  • 未解决的问题:

12 容器的资源限制【Pending】

未解决的问题

  • 第11章试验失败,docker centos不能联网安装stress
    Failed to download metadata for repo 'AppStream'

相关文章

  • docker

    1.docker 镜像 容器 2.docker与虚拟机 3.docker简单操作 1.docker 镜像 容...

  • Docker 常用操作指令

    镜像操作 列出docker下的所有镜像 搜索镜像 拉取镜像 删除镜像 容器操作 查看容器 创建与启动容器 创建容器...

  • [技术探索]Docker学习笔记

    镜像与容器 docker中容器和镜像的关系是什么?docker的整个生命周期有三部分组成:镜像(image)+容器...

  • docker相关概念理解

    Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。 Docker 容器(...

  • docker安装使用,简单命令

    安装与配置 Docker docker的使用 拉取镜像——用镜像启动容器

  • Docker命令及实战

    常用Docker命令 docker容器信息 镜像操作 镜像搜索 镜像下载 删除镜像 容器操作 提示:对于容器的操作...

  • 使用docker构建nexus3私服

    使用 docker 构建 Nexus 3 Maven仓库 拉取Docker镜像 启动Docker容器

  • Docker

    [TOC] 使用 Docker 镜像 下载镜像 列出镜像 构建镜像 删除本地镜像 操作 Docker 容器 容器是...

  • windows使用docker啓用centos8鏡像

    1、拉取镜像 docker pull centos:8 2、查看镜像 docker images 3、创建容器 d...

  • docker常用指令

    1.docker启动、暂停、重启 2.docker 镜像操作 3. docker 容器指令 (1)启动和停止容器 ...

网友评论

      本文标题:3 Docker的镜像与容器

      本文链接:https://www.haomeiwen.com/subject/aprdrhtx.html