zoukankan      html  css  js  c++  java
  • docker命令、简单创建镜像、dockerfile实战、Dockerfile语法、镜像分层、Volume介绍

    docker的常用命令:

    docker pull 获取image
    docker build 创建image
    docker images 列出image
    docker run 运行container
    docker stop 停止container
    docker rmi 删除image
    docker ps 列出container
    docker ps -a 列出container的历史记录
    docker rm 【"idlist"】删除contain多个历史记录
    docker run -p 8080:80 -d daocolud.io/nginx 运行nginx
    docker cp index.html ["id"]://usr/share/nginx/html 暂时修改nginx首页
    docker commit -m 'fun' ["id"] ['name'] 保存修改的image

    创建简单的docker镜像 Dockerfile

    1.创建Dockerfiler文件

     2.编辑文件,vim Dockerfile

    输入:

    FROM alpine:latest
    MAINTAINER yrg
    CMD echo "Hello Docker"

     3.创建镜像

    docker build -t hello_docker .

    -t:给镜像一个hello_docker的标签,' '是一个路径名,把底下所有的内容都送给docker engine 让他产生一个image

     4.查看image

     5.运行image

     

     Dockerfile实战(创建较复杂的image)

     

    1.创建文件夹,创建Dockerfile文件

    2.编辑文件,在其中添加如下:

    FROM ubuntu    #名字
    MAINTAINER yrg            #作者    
    RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list  #加速镜像
    RUN apt-get update   #更新Ubuntu的库
    RUN apt-get install -y nginx  #安装nginx的命令
    COPY index.html /var/www/html  #拷贝准备的index.html到容器里(不同Ubuntu是不一样的)
    ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]  #容器的入点,将nginx作为前台来执行

    EXPOSE 80  #端口

    3.创建镜像

    docker build -t yrg/hello-nginx .

     4.运行镜像

    docker run -p 80:80 -d yrg/hello-nginx

    5.curl http://localhost进行查看

    Dockerfile语法

     镜像分层

     Volumo

    介绍:提供独立于容器之外的持久化存储

    操作:1.docker run -d --name nginx -v /usr/share/nginx/html nginx

     2.docker inspect nginx 查看详情

     3.查看文件

    ls /var/lib/docker/volumes/76db0f001f7675c41f511400dd09be16fe2e785f114c7f1a1e0f860c3b36f4fd/_data

     

     4.可以修改index文件进入容器中下查看

    docker  exec -it  /bin/bash

    cd /usr/share/nginx/html

    cat index.html

    方式二挂载:

    docker run -p 80:80 -d -v $PWD/html:/usr/share/nginx/html nginx

    三:

    docker create -v $PWD/data:/var/mydata --name data_container ubuntu

     进入Ubuntu

    docker run -it --volumes-from data_container ubuntu /bin/bash

    输入mount

     进入/var/mydata,输入ls,可以看到为空

     创建一个文本,whatever.txt,然后退出

     进入data,输入ls,可以看的当前目录下也创建了一个whatever.txt的文本

     说明挂载成功

    Registry(镜像仓库)

     

     # docker search whalesay   :从仓库中搜索镜像

    # docker pull whalesay    :从仓库中下载镜像

    # docker push myname/whalesay  :将自己做的镜像上传到仓库

    国内的一些仓库:

    daocloud

    时速云

    aliyun

    实战:

    docker search whalesay

     下载镜像

    docker pull docker/whalesay

    查看镜像:

     运行镜像

    docker run docker/whalesay cowsay dockerisfun 

    docker tag docker/whalesay  godyrg/whalesay       :产生一个新的tag的镜像

     

     上传镜像:

    进行登录

    docker login

    登录成功后 ,上传镜像

    docker push godyrg/whalesay

    进入 https://hub.docker.com/ ,可以看到上传的镜像

     docker-compose(多容器)

    Mac/windows :自带

    linux:需要安装:

    curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


    chmod +x /usr/local/bin/docker-compose  :给文件夹赋予权限

    输入

    docker-compose --version

    如果显示版本号,安装成功


    实战:
    创建 ghost,nginx,data文件夹
    在ghost文件夹中创建Dockerfile

     编辑Dockerfile文件

    FROM ghost
    COPY ./config.js /var/lib/ghost/config.js
    EXPOSE 2368
    CMD ["npm","start","--production"]

     

    接着

    var path = require('path'),
    config;
    config={
    prodution: {
    url: 'http://mytestblog.com',
    mail: {},
    database: {
    client: 'mysql,
    connection: {
    host : 'db',
    user : 'ghost',
    password : 'ghost',
    database : 'ghost',
    charset : 'utf8'
    },
    debug:false
    },
    path:{
    contentPath:path.join(process.env.GHOST_CONTENT,'/')
    },
    server: {
    host: '0.0.0.0',
    port: '2368'
    }
    }
    } ;
    moudle.exports = config;

     

     保存退出

    进入刚刚创建的nginx目录

     创建Dockerfile文件,编辑

    FROM nginx
    COPY nginx.conf /etc/nginx/nginx.conf
    EXPOSE 80

     保存退出

    创建nginx.conf配置文件

    worker processes 4;
    events {worker_connections 1024}
    http {
    server{
    listen 80;
    loction / {
    proxy_pass http://ghost-app:2368;
    }
    }
    }

    最后准备docker-compose.yaml文件

    version: '2'

    networks:
    ghost:

    services:
    ghost-app:
    build: ghost
    networks:
    - ghost
    depends_on:
    - db
    ports:
    - "2368:2368"

    nginx:
    build: nginx
    networks:
    - ghost
    depends_on:
    - ghost-app
    ports:
    - "80:80"
    db:
    image: "mysql :5.7.15"
    networks:
    - ghost
    enviroment:
    MYSQL_ROOT_PASSWORD: mysqlroot
    MYSQL_USER: ghost
    MSYQL_PASSWORD: ghost
    volumes:
    - $PWD/data:/var/lib/mysql
    ports:
    - "3306:3306"

     docker-compose  up -d 进行挂起(无镜像,系统帮忙做一个镜像)

    docker-compose stop 停止(出现错误的不停止)

    docker-compose rm   停止(错误的也停止)

    
    

     docker-compose build (自己构建一个镜像)



  • 相关阅读:
    POJ1475【推箱子】(双bfs)
    CH2101:【可达性统计】(拓扑排序+状态压缩)
    拓扑排序模板
    BZOJ 2288: 【POJ Challenge】生日礼物 优先队列+贪心+链表
    Play Framework 完整实现一个APP(六)
    Play Framework 完整实现一个APP(五)
    Play Framework 完整实现一个APP(四)
    Play Framework 完整实现一个APP(三)
    Play Framework 完整实现一个APP(二)
    Play Framework 完整实现一个APP(一)
  • 原文地址:https://www.cnblogs.com/godyrg/p/11910460.html
Copyright © 2011-2022 走看看