zoukankan      html  css  js  c++  java
  • docker相关

    docker

    安装

    # 卸载老版本
    sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    
    # SET UP THE REPOSITORY
    sudo yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2
    
    sudo yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo
        
    # Install Docker CE
    sudo yum install docker-ce docker-ce-cli containerd.io	
    
    # Start Docker.
    sudo systemctl start docker
    
    # Verify that Docker CE is installed correctly by running the hello-world image.
     sudo docker run hello-world
     
    # Uninstall Docker CE
    1. Uninstall the Docker package:
    
    $ sudo yum remove docker-ce
    2. Images, containers, volumes, or customized configuration files on your host are not automatically removed. To delete all images, containers, and volumes:
    
    $ sudo rm -rf /var/lib/docker
    

    常用命令

    docker version # 查看版本
    docker search hello-world # 搜索docker的镜像
    docker pull hello-world # 下载docker的镜像
    docker push 镜像名 # 把本地镜像推送到dockerhub
    docker image ls # 查看镜像
    docker images # 查看镜像
    docker run 镜像名/镜像id(可以只写前3位)  起了就关
    docker stop 容器id # 停止正在运行的容器
    docker start 容器id # 启动一个关闭中的容器
    docker run -it 镜像名/镜像id  # 运行一个docker容器实例, 
    
    ### 相关参数
    -i:交互式界面  
    -t:	开启一个终端
    -d: 后台运行容器,返回容器ID
    --name:给容器起别名
    --rm:运行完就删除容器
    -P:随机端口转发
    -p 外部port:docker内部port: 指定端口转发
    -v /data:/data:挂载宿主机的文件到容器文件夹
    
    docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep	1;done"
    /bin/sh 调用shell解释器
    -c 指定一段shell脚本
    docker  logs -f 容器id # 查看正在运行中容器的日志, -f表示不间断打印
    
    docker port 容器id    #查看容器运行端口
    
    docker ps # 查看docker进程,只能查看正在
    docker ps -a # 查看所有运行过的docker容器记录
    docker ps -qa # 查看id
    docker rm 容器id # 删除的是已经停止的容器
    docker rm `docker ps -aq`   # 一次性删除所有容器
    docker rmi 镜像id # 删除一个镜像记录,必须把和该镜像相关的容器全删除后才能删除镜像
    
    docker commit # 提交容器记录为新的镜像
    
    
    docker exec -it 容器id /bin/bash  # 进入正在后台运行的docker
    

    导出、导入镜像

    # 导出centos镜像
    docker save centos > /data/centos.tar.gz
    
    # 导入centos镜像
    docker load centos < /data/centos.tar.gz
    

    Dockerfile

    Dockerfile就是一个文本,里面包含一条条指令。每条指令构建一层,所以每条指令就是描述该层应当如何构建。

    # myflask.py
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def index():
        return "hello"
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port="5000")
    
    # Dockerfile示例
    FROM centos
    LABEL maintainer="xxx@163.com"
    ADD CentOS-Base.repo /etc/yum.repos.d
    ADD CentOS-Epel.repo /etc/yum.repos.d
    RUN echo "hah"
    RUN yum clean all
    RUN yum update -y
    RUN yum install python-pip -y
    RUN pip install flask
    RUN mkdir app
    RUN echo "hah"
    COPY my_flask.py app  # 将本地Dockerfile同目录的my_flask.py拷贝到容器指定目录
    WORKDIR app
    EXPOSE 5000 # 暴露容器的5000端口,给宿主机访问
    CMD python my_flask.py  # 运行文件
    
    # 构建docker镜像文件
     docker build -t  docker账户名/镜像名 .
     
    # 运行
    docker run -d -p 8080:8080 docker账户名/镜像名
    
    #发布自己的镜像
    1. docker login
    2. 更改现有镜像的名字为:dockerUsername/镜像名
    docker tag 7698f282e524 tmdhhl/python3:latest
    3. docker push 本地镜像
    

    构建私有仓库

    # 下载docker官方提供的私有仓库镜像
    下载并启动官方registry镜像
    docker run -d 
        -p 5000:5000 
        -v /opt/data/registry:/var/lib/registry 
        registry
    
    # 使用 docker tag 来标记一个镜像,然后推送它到仓库
    # 格式: docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
    
    docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest
    
    # 查看仓库中的镜像
    curl 127.0.0.1:5000/v2/_catalog
    
    # 下载本地仓库中的镜像
    docker pull 127.0.0.1:5000/ubuntu:latest
    

    注意事项

    如果你不想使用 127.0.0.1:5000 作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如 192.168.199.100:5000 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。

    这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制。

    # 在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
    {
      "registry-mirror": [
        "https://registry.docker-cn.com"
      ],
      "insecure-registries": [
        "192.168.199.100:5000"
      ]
    }
    注意:该文件必须符合 json 规范,否则 Docker 将不能启动
    

    更多高级使用:https://yeasy.gitbooks.io/docker_practice/repository/registry_auth.html

  • 相关阅读:
    数组静态初始化和动态初始化
    一维数组
    标识符啊
    常量定义
    11.08问题总结
    毕设(10.30)
    毕设(10.29)
    毕设(10.28)
    毕设(10.27)
    毕设(10.26)
  • 原文地址:https://www.cnblogs.com/tmdhhl/p/docker.html
Copyright © 2011-2022 走看看