• docker学习笔记


    我个人认为,docker可以看做一个轻量级的虚拟机软件,它跟虚拟机不同在于它只虚拟了程序的运行环境,不像虚拟机那样虚拟出整套系统,所以进程隔离之类的没虚拟机好。优点是小,快,使用方便。

    以下是docker 的一个简单例子,运行centos的一个/bin/bash,先在本地找镜像,通过镜像实例化一个centos容器,如果本地没有就去线上docker的仓库里面找,然后下载再实例化。

    docker run --name [name] --restart=always -i -t -d centos /bin/bash

    --name设置容器名称
    --restart启动失败自动重启
    -d后台运行容器
    -i设置容器中的STDIN是开启的。
    -t创建的容器分配一个伪tty终端。
    -w可以在运行时覆盖工作目录。
    -e在运行时可以使用传递环境变量。
    -u指令用于设定该镜像会以什么用户去执行。
    -v参数进行卷映射,为Docker提供持久化或共享数据。


    exit 退出容器
    docker ps -a 查看所有容器
    docker info 查看docker信息
    docker start [name] 启动某个容器
    docker attach [name] 进入某个容器
    docker logs [name] 查看某容器日志
    docker top [name] 查看某容器使用情况
    docker stop [name] 停止某容器
    docker rm [name] 删除某容器
    docker inspect [name] 查看容器详细信息
    docker rmi [name] 删除某个镜像

    docker login 登录docker
    docker images 查看本地镜像
    docker search [images_name] 在远程仓库查找镜像
    docker pull [images_name] 在远程仓库下载镜像
    docker push [images_name] 上传本地镜像到远程仓库
    docker port [name] [port] 查看某容器使用的端口

    通过attach进入的某个容器(容器必须在运行状态)想退出并让容器在后台继续运行使用ctrl+P+Q
    docker exec -it [name] /bin/bash进入的容器用exit也不会真正退出容器它还在后台继续运行


    docker commit构建镜像
    运行一个容器,添加需要的功能后退出,使用以下命令,其中[name]填写添加好的容器的名称
    docker commit -m="[message]" --a="[author]" [name] [new_name]/[new_name]:[new_name]

    -a :提交的镜像作者;
    -c :使用Dockerfile指令来创建镜像;
    -m :提交时的说明文字;
    -p :在commit时,将容器暂停。


    docker build和Dockerfile文件来构建镜像
    创建一个目录,在目录里面新建一个Dockerfile(固定名称),编辑Dockerfile
    mkdir [dir_name]
    cd [dir_name]
    touch Dockerfile

    # Version 0.1
    # 基础镜像
    FROM ubuntu:latest
    # 维护者信息
    MAINTAINER test@qq.com
    # 镜像操作命令
    RUN apt-get -yqq update && apt-get install -yqq apache2 && apt-get clean
    # 容器启动命令
    CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

    FROM:用于制定一个已经存在的镜像,后续指令都是基于该镜像来运行。这个镜像我们称之为基础镜像。
    MAINTAINER:说明该作者和作者邮箱信息。
    RUN:指令后的内容会通过/bin/sh -c来执行。

    docker build --no-cache -t="[new_name]/[new_name]:[new_name]"` .
    -t:指定了新生成镜像的镜像名称。
    .表示的是在当前目录下寻找Dockerfile文件。

    Dockerfile编写常用命令
    USER [user_name] 后续命令执行的用户
    WORKDIR [dir] 后续命令执行的目录
    EXPOSE [port] 对外连接端口号
    ENV HOSTNAME [host_name]设置主机名称
    ADD [dir] [dir] 把一个目录复制到镜像里

    -------------------------------------------------------------------------------------------------------------------------------------------------

    更多详细的步骤可以看一下这位大神

    https://www.missshi.cn/api/view/blog/5a6327d10a745f6335000005

  • 相关阅读:
    js 闭包范式概述
    [置顶] 学习JDK源码:编程习惯和设计模式
    第七届蓝桥杯JavaB组国(决)赛部分真题
    第七届蓝桥杯JavaA组国(决)赛部分真题
    第七届蓝桥杯JavaA组国(决)赛部分真题
    第七届蓝桥杯JavaA组国(决)赛部分真题
    第七届蓝桥杯JavaA组国(决)赛部分真题
    第七届蓝桥杯JavaA组国(决)赛部分真题
    Java实现蓝桥杯历届真题国王的遗产
    Java实现蓝桥杯历届真题国王的遗产
  • 原文地址:https://www.cnblogs.com/newbee-yun/p/11505489.html
Copyright © 2020-2023  润新知