zoukankan      html  css  js  c++  java
  • Docker 安装和使用

    安装

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh    or   sudo sh get-docker.sh --mirror Aliyun
    sudo usermod -aG docker your-user
    

    最好用国内的源,国外的源容易卡,容易安装失败

    常用命令

    下载镜像,如果不指定版本的话,默认用 latest

    sudo docker pull ubuntu:18.04
    

    默认是到 docker 的官方 registry 下载镜像,有可能很慢,可以改变默认配置

    创建或修改文件 /etc/docker/daemon.json,添加以下内容

    {
      "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
    }
    

    重启服务

    systemctl daemon-reload
    systemctl restart docker
    

    重新 pull 速度就快了很多


    可以在 pull 的时候指定 registry

    docker pull URL/ubuntu:18.04
    

    registry 有可能要求先登陆

    docker login URL/ubuntu:18.04
    


    查看本地已有的镜像

    sudo docker images
    


    删除镜像

    sudo docker rmi ubuntu:18.04
    


    启动容器

    sudo docker run -i -t ubuntu:18.04 /bin/bash
    

    如果本地没有相应的镜像,会自动到默认 registry pull
    /bin/bash 是容器启动后执行的命令,可以是任何命令
    -i -t 表示使用交互式终端,配合 /bin/bash 命令相当于是登陆了容器


    后台运行 -d

    sudo docker run -t -i -d ubuntu:18.04 sleep 10
    


    共用宿主机网络,修改主机名

    docker run --network host --hostname docker_test -i -t -d ubuntu:18.04 /bin/bash
    


    查看容器状态

    docker ps -a
    


    连上正在运行的容器 (连上容器启动命令的标准输出输入)

    docker attach c93b8664bad3
    


    连上正在运行的容器 (启动新命令)

    docker exec -t -i c93b8664bad3 /bin/bash
    


    停止和删除容器

    docker stop c93b8664bad3 
    docker rm c93b8664bad3 
    


    删除所有处于 stop 状态的容器

    sudo docker container prune
    


    端口映射

    docker run --network host -d -i -t -p 9000:9000 ubuntu:18.04 /bin/bash
    


    设置环境变量

    docker run --network host -d -i -t -e "env_1=test_1" -e "env_2=test_2" ubuntu:18.04 /bin/bash
    


    查看标准输出日志

    docker logs c93b8664bad3
    


    查看容器信息

    docker inspect c93b8664bad3
    


    将正在运行的容器创建成新的镜像

    docker commit -m="Docker Test" -a="lin" c93b8664bad3 ubuntu_18_04_test:v1
    


    将创建的镜像推到 registry

    docker push ubuntu_18_04_test:v1
    


    导出导入容器

    docker export -o [file] [container_id]
    docker import [file] [command]
    


    导出导入镜像

    docker save -o ubuntu_18_04_test.tar ubuntu_18_04_test:v1
    docker load -i ubuntu_18_04_test.tar
    


    通过 Dockerfile 创建镜像

    # cat ./Dockerfile
    FROM ubuntu_18_04_test:v1
    
    USER root
    
    ENV env_name "test"
    
    COPY flask_test.tar.gz /opt
    WORKDIR /opt
    
    RUN tar -xvf flask_test.tar.gz 
        && rm flask_test.tar.gz
    
    WORKDIR /opt/flask_test
    RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt
    
    EXPOSE 8000
    
    CMD gunicorn -c gunicorn_config.py flask_test:app
    
    docker build --network host -t ubuntu_flask_test:v1 ./
    

    有几点注意

    1. ENV 是设置环境变量
    2. 可以用 ADD 取代 COPY,而 ADD 命令除了复制还会同时做解压,甚至可以将 URL 文件下载并解压
    3. 如果用 cd 命令改变目录,这个设置只在当前 RUN 命令有效,要长久有效要用 WORKDIR
    4. 尽量不要写多个 RUN,因为 RUN 命令实际上会增加一层镜像
    5. EXPOSE 本身不会实际起作用,要等到 docker run 指定 -P (注意是大写) 参数时才会映射 EXPOSE 指定的端口
    6. CMD 指定容器的启动命令,如果 docker run 有带启动命令,CMD 指定的命令会被忽略,如果是通过 ENTRYPOINT 指定,那即使 docker run 有带启动命令也无法覆盖



    docker-compose

    安装

    sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    docker-compose --version
    

    下载 docker-compose 需要翻墙,可以找国内的网站下载,比如 http://get.daocloud.io/

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

    官网 https://docs.docker.com/compose/ 的介绍如下

    Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

    就是一个可以配置管理多个容器的工具

    先定义一个 docker-compose.yml 文件

    version: '2.0'
    services:
      web:
        build: .
        ports:
        - "5000:5000"
        volumes:
        - .:/code
        - logvolume01:/var/log
        links:
        - redis
      redis:
        image: redis
    volumes:
      logvolume01: {}
    

    这个配置文件定义了两个容器,一个 redis,直接使用现成的镜像,一个 web,通过 dockerfile 生成

    通过下面的命令可以依据配置文件启动和停止这两个容器

    docker-compose up
    docker-compose down
    

    可以通过指定文件启动多个配置

    docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
    

    docker-compose 可以做很多配置,看起来有点像 K8S 的 pod

  • 相关阅读:
    SpringCloud面试题
    网工必知:(1)Cisco 路由器PPPOE拨号配置与NAT简单上网配置
    【网工的福利来了!】用Excel表做的“子网划分&路由聚合计算器”
    肝了,一文让你看懂《Docker极简入门指南》
    ImportError: libopenblas.so.0: cannot open shared object file
    Linux软件包管理工具 Snap 常用命令
    squashfs文件系统
    回环设备
    Mac homebrew报错Error: homebrew-core is a shallow clone.
    公钥和私钥
  • 原文地址:https://www.cnblogs.com/moonlight-lin/p/12832578.html
Copyright © 2011-2022 走看看