Docker简单实例

1 篇文章 0 订阅
1 篇文章 0 订阅

Docker

  1. 下载相关的镜像

    $ docker pull <image-name>
    
  2. 制定需要的镜像

    $ touch Dockerfile
    $ vi Dockerfile
    FROM <image-name>
    
    WORKDIR /wo/
    
    COPY ./ /wo/
    
    ENTRYPOINT <command>
    
    RUN <command>
    
  3. 建立自定义的镜像

    $ docker build . -t <demo:tag>
    
  4. 新建docker-compose.yml文件

    $ vi docker-compose.yml
    version: "3.0"
    
    services:
        demo:
            image: demo:tag
            container_name: demov1
            ports:
                - "8088:8000"
                - "本地端口:容器内端口"
            environment:
                - ...
            networks:
                - demo_net
            links:
                - other_demo
            depends_on:
                - other_demo
            command: ...
            restart: always
    
  5. 启动docker-compose.yml

    $ docker-compose up -d
    $ docker-compose down # 删除对应的容器
    
  6. 在yml文件中 command 测试后存在只能运行部分命令

    $ docker-compose run demo <command>
    # docker-compose run demo ./manage.py migrate
    $ docker-compose exec demo <command>
    # docker-compose exec demo uwsgi --ini uwsgi.ini
    

注意:

  • 容器一直处于restarting状态
    command: tail -f /dev/null
    
  • mysql 镜像注意点-制定镜像时候,需要修改数据库权限;否则容器间无法访问
    ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql'; 
    FLUSH PRIVILEGES; 
    
  • 启动容器文件存在command无法运行多条命令的问题
    1. command 直接运行多条
      command: bash -c "<command> && <other-command>"
      # 个人在使用期间,遇到无法执行或者只执行某条(原因并未知道,期待讨论)
      
    2. docker-compose 命令运行多条
      $ docker-compose run <service-name> <command>
      $ docker-compose exec <service-name> <command>
      # 其中的具体区别可以查看官方文档哦
      
  • windows 和 Mac / Linux 之间有差别
    1. command: bash -c ""中bash不是内部命令
      1. 查看镜像是否是 alpine 
      2. 尝试 /bin/bash  /bin/sh sh 
      3. 尝试更换原镜像
      4. 利用启动文件 eg. < /entrypoint.sh mysqld >
      
    2. 必须存在启动命令: 添加command
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值