zoukankan      html  css  js  c++  java
  • 今日份学习: Docker 和 Docker的使用

    笔记

    Docker 能做什么?

    • 保证开发、测试、交付、部署的环境完全一致
    • 保证资源的隔离
    • 启动临时的、用完即弃的环境,例如测试
    • 迅速(秒级)超大规模部署和扩容

    Docker 基本概念

    • 镜像 image

    预先定义好的模板文件,Docker引擎按照这个模板启动无数个容器

    • 容器 container

    独立的,默认和宿主机不发生任何交互

    docker <Docker参数> <镜像名> <镜像中要运行的命令和参数>

    docker pull/images

    • docker pull:下载指定镜像。比如:docker pull mysql:8.0.1

    默认从docker的中央仓库找,也可以指定镜像仓库:镜像仓库/镜像名:tag

    • docker images:查看本地已有的镜像。

    docker run/ps

    • docker run:装在镜像成为一个容器

    每个容器有一个ID,支持缩写。
    两种主要的运行模式:

    • docker run -it <镜像名> <镜像中要运行的命令和参数>
    • docker run -d <镜像名> <镜像中要运行的命令和参数>
    参数 含义
    -i 以交互模式运行容器,通常与 -t 同时使用;
    -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -d 后台运行(daemon模式)容器,并返回容器ID;
    --name 为容器指定一个名字
    --restart=always 遇到错误自动重启
    -v <本地文件:<容器文件> 文件映射(可以设置权限,比如:<容器文件>:rw)
    -p <本地端口>:<容器端口> 端口映射
    -e NAME=VALUE 环境变量(environment)

    例子:比如启动一个mysql
    docker run --name mysql -v e:docker:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:8.0.18

    docker start/stop

    启动/停止一个容器

    docker rm

    删除容器

    • docker rm xxx

    rm -f 参数:强制

    • docker rmi 镜像id

    删除镜像

    docker exec

    exec: 执行
    指定目标容器,进入容器执行命令,调试等。

    • docker exec -it <容器id> <容器内要运行的命令和参数>

    例如:docker exec 容器ID bash

    docker logs

    • docker logs <容器ID/容器名>

    查看目标容器的输出

    -f 跟踪实时日志(follow)

    docker inspect

    • docker inspect <容器ID/>

    查看容器的详细状态

    dockerfile 和 镜像仓库

    docker镜像默认分层,为了复用。
    例如(ubantu的dockerfile):

    #
    # Ubuntu Dockerfile
    #
    # https://github.com/dockerfile/ubuntu
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    # Install.
    RUN 
      sed -i 's/# (.*multiverse$)/1/g' /etc/apt/sources.list && 
      apt-get update && 
      apt-get -y upgrade && 
      apt-get install -y build-essential && 
      apt-get install -y software-properties-common && 
      apt-get install -y byobu curl git htop man unzip vim wget && 
      rm -rf /var/lib/apt/lists/*
    
    # Add files.
    ADD root/.bashrc /root/.bashrc
    ADD root/.gitconfig /root/.gitconfig
    ADD root/.scripts /root/.scripts
    
    # Set environment variables.
    ENV HOME /root
    
    # Define working directory.
    WORKDIR /root
    
    # Define default command.
    CMD ["bash"]
    

    Dockerfile

    指定镜像如何生成。

    写一个自己的Docker:

    FROM centos:7
    #FROM ubantu:16.04
    
    RUN yum -y install nginx
    #RUN apt-get update && apt-get -y install nginx
    
    RUN echo "Hello" > /usr/share/nginx/html/index.html
    
    EXPOSE 80     
    #暴露80端口
    
    1. 然后 docker build 写好的文件
    2. docker run -p 8080:80 镜像ID
    3. docker ps
    4. docker tag 镜像ID name:tag (可以指定push到哪里去,例如:docker tag 镜像ID 127.0.0.1:5000/name:tag)
    5. docker push (如果是127.0.0.1,前提是执行了下面的registry,部署了私服才可以)
    6. 可以访问一下浏览器:localhost:5000/v2/name/tags/list
    7. 现在可以docker pull了

    记录一个好玩的:

    • 部署 Docker私服
      docker run -d -p 5000:5000 --restart always --name registry registry:2
    • 镜像仓库设置
    -- registry-mirror:指定镜像源
    -- insecure-registry:使用HTTP方式(默认HTTPS)
    

    K8s(Kubernetes)

    Kubernetes(K8s)是一个开源系统,用于自动化容器化应用程序的部署,扩展和管理。

    _

    _

    练习时遇到的问题

    1. Pull不下来:各种加速器
    2. 练习
  • 相关阅读:
    java线程间的协作
    java线程间的共享
    java多线程基础API
    java并发编程基础概念
    如何设计一套规则引擎系统
    Stream—一个早产的婴儿
    Java函数式编程的前生今世
    关于微服务划分的一些思考
    如何更优雅的给控制器 “减负”
    PHP简洁之道
  • 原文地址:https://www.cnblogs.com/pipemm/p/12300761.html
Copyright © 2011-2022 走看看