• docker


    镜像

    常用连接:

    docker 镜像仓库:https://registry.hub.docker.com/  

    docker操作文档: https://docs.docker.com/

    1. 查看本地镜像: docker images

      docker images -q 只显示镜像id

    2. 搜索镜像 :docker search [镜像名]  

      docker search golang

    3. 从docker hub拉取镜像到本地: docker pull   [镜像名] (不指定tag, 默认拉取最新版本)

      docker pull python (拉取的是最新版本)

      docker pull   python:3.7  (拉取指定版本)

    4. 提交镜像到docker hub,docker push [镜像名:tag] 

      docker push myImage:1.0

    5. 删除镜像 docker rmi 镜像名:tag | 镜像id  (必须没有 在运行的容器) 

    6. 删除所有镜像 docker rmi $(docker images -aq)

    docker镜像采用分层结构

    docker镜像实际是由一层一层的文件系统组成,联合文件系统。

    bootfs:主要包含bootloader和kernel,bootloader主要引导加载kernel,linux启动时,会加载bootfs文件系统。docker镜像的最底层就是bootfs。当boot加载完,

    整个内核就都在内存中了,此时内存的使用权就交给内核了,此时会卸掉bootfs。

    rootfs:在bootfs之上,包含的就是典型的linux系统的文件和目录。rootfs就是各种不同的操作系统发行版,如centos、ubuntu。

    平时安装一个centos或Ubuntu可能需要几个G,docker这里只有几百M。其实相当于是精简版的os,rootfs可以很小,包含最基本的命令、工具、程序库,底层直接使用宿主机的kernel,自己有rootfs即可。

    好处:资源共享。 比如,有的镜像都是从相同的基础镜像构建而来,那么当pull镜像时,就不会再拉取这个基础镜像了,因为可以共用,而且每一层都可以共用。

    docker镜像是只读的,当容器启动时,一个新的可写层加载到镜像的顶层,这一层成为容器层,容器之下叫镜像层。

    容器

    1. 查看容器 docker ps (只显示当前正在运行的容器)

       docker ps -a   查看所有容器
      docker ps -aq      查看所有容器id

    2. 运行容器 docker run 镜像名:tag | 镜像id  (不指定tag,默认运行最新版本)

    docker run 的常用参数:

    -d 后台运行容器

     -i: 以交互模式运行容器,通常与 -t 同时使用;

     -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    -P: 随机端口映射,容器内部端口随机映射到主机的端口

    -p: 指定端口映射,格式为:主机端口:容器端口

    --name="golang": 为容器指定一个名称

    -h "hostname": 指定容器的hostname

    -e pwd="password": 设置环境变量;

    --link 添加链接到另一个容器;

    -v: 绑定一个数据卷

    3. docker start 容器id | 容器名   启动容器

    4. docker stop 容器id | 容器名   停止容器

    5. docker restart 容器id | 容器名   重启容器

    6. docker pause 容器id | 容器名   暂停容器

    7. docker unpause 容器id | 容器名   恢复容器

    8. docker  kill 容器id | 容器名   杀死(停止)容器

    9. docker rm 容器id | 容器名   删除容器

    10. docker rm $(docker ps -aq) 删除所有容器

    11. docker logs 容器id | 容器名   查看容器日志

      docker logs -f   实时监控容器日志

    12. docker attach 容器id | 容器名 进入容器正在运行的界面

    13 docker exec -it 容器id | 容器名 以交互方式进入容器

    14 docker cp 容器id:容器目录或文件 主机目录      将容器文件拷贝到主机

    15 docker cp 主机目录或文件  容器id:容器目录     将主机文件拷贝到容器

    16 docker top 容器id | 容器名称  查看容器中的进程

    17 docker inspect 容器id | 容器名称  查看容器元数据

    18 docker commit -m "备注" -a "作者" 容器id | 容器名  镜像名:tag

    19 docker save 镜像名:tag -o 文件名.tar  备份镜像

    20 docker load -i 文件名.tar 

    数据卷

    docker run -v 宿主机绝对路径:容器内路径

    docker run -v  宿主机绝对路径:容器内路径:ro

        ro:只读, 如果指定,容器内的文件是只读的。 这种方式会将容器路径的原始数据清空,始终以宿主机为主

    docker run -v volumeName: 容器内路径

        volumName相当于数据卷的别名。 如果这个别名数据卷存在,则直接使用, 不存在创建

        数据卷默认目录 /var/lib/docker/volumes/

    docker volume 相关命令

    docker volume ls 查看数据卷

    docker volume create 卷名 创建数据卷

    docker volume inspect 卷名 查看数据卷元数据

    docker volume rm 卷名 删除数据卷

    docker run --volume-from 容器名    继承其他容器的数据卷。当继承容器或被继承容器,以及所挂载主机目录的文件添加修改时,会一起变化。其中一个容器的数据卷删除,不影响其他继承容器。

    网络

      当docker启动时,会自动在主机上创建一个docker0的虚拟网桥,实际上是linux的一个网桥,可以理解为一个交换机,会挂载到它网口之间进行转发。

    docker随机分配一个本地为占用的私有网段中的一个地址给docker使用。

       当创建一个容器时,同时会创建一对veth:pair接口,当数据包发送给一个接口时,另一个接口也可以收到。这对接口一个在容器内(eth0),另一端在本地并挂载到docker0网桥,

    名称以veth开头。通过这种方式,主机可以和容器通信,容器与容器之间也可以通信。

    docker中的网桥类型:bridge, host, null

    docker network create -d bridge(默认) 网络名称  创建网络自定义网桥

    docker network ls   查看网络列表

    docker network inspect 网络名  查看网络详细信息

    docker network rm 网络名    删除网络

    docker run  --network 网络名  ...     启动容器时加入某个网络

    docker network connect 网络名 容器id(容器名称)    容器启动之后加入网络

    docker network disconnect  网络名 容器id(容器名称)    容器断开已加入网络

    Dockerfile

    FROM  指定基础镜像

    RUN    构建镜像时执行的命令

    EXPOSE  容器向外暴露的端口

    ENV  容器所使用的环境变量, 可在docker run时通过- e 修改

    ADD  复制src路径下的内容到容器dest目录。src可为url会自动下载,也可以是tar文件,且会自动解压

    COPY  复制sec路径的内容到容器dest目录,但不会自动解压

    LABEL   指定生成镜像元数据的标签信息

    VOLUME  容器数据卷挂载点

    WORKDIR  配置工作目录,可为CMD、ENTRYPOINT、RUN指定工作目录

    CMD  指定启动容器时默认的执行的命令,

    ENTRYPOINT  启动容器时执行的命令

     CMD & ENTRYPOINT

      1. 直接命令方式     python demo.py

      2. 数组方式    ["python", "demo.py"]

      区别:

        1. run:  dockerfile中有多个run时,只有一个生效, 在docker run使用命令时会被覆盖

          docker run 镜像 其他命令(如 ls)

        2. entrypoint:在docker run 指定entrypoint时会被覆盖

          docker run --entrypoint 覆盖命令 镜像

       使用:

        entrypoint用于固定的命令,cmd为entrypoint指定参数

        如: entrypoint python

           cmd  demo.py  (如果执行文件有变动,则可直接在docker run时覆盖)

    docker-compose

     常用命令

    docker-compose  up 启动项目

    docker-compose up 服务id  对当前docker-compose中对应服务id操作

      docker-compose up会自动构建镜像,创建服务,启动服务,编排容器

    docker-compose up -d  后台启动项目

    docker-compose down 关闭项目

    docker-compose down 服务id  关闭服务

      docker-compose down 会关闭所有容器,并移除网络

    docker-compose exec 服务  进入服务(相当于 docker exec)

    docker-compose ps 查看在运行的服务

    docker-compose restart 重启项目

    docker-compose -t 服务id   重启服务

    docker-compose start 启动项目

    docker-compose stop 停止项目

    docker-compose rm -f(强制删除) -v(容器挂载的数据间) 服务id    删除整个项目或某个服务

    docker-compose top 服务id 查看项目 或服务运行状态

    docker-compose文件常用指令

    build  通过docker-compose在启动容器之前根据dockerfile构建镜像

    command  覆盖容器启动后执行的命令

    container_name  指定启动容器的名称

    depends_on  解决容器启动的依赖,启动的先后顺序

      当前服务不会等待被依赖服务完全启动才启动

    environment  用来给容器启动指定环境变量,相当于 docker run -e

    env_file  用来给容器启动指定环境文件,相当于docker run --env-file

    expose  用于容器暴露端口

    images  用来指定容器启动所使用的的镜像,相当于docker run image(镜像名)

    networks  用来指定容器所使用的网桥,相当于docker run -network

    ports  用于容器与主机之间的端口映射,相当于docker run -p

    volumes  用于数据卷目录的映射,相当于docker run -v

    restart  用于指定容器重启的策略,如docker run --restart always

  • 相关阅读:
    easyui源码翻译1.32--ValidateBox(验证框)
    easyui源码翻译1.32--TreeGrid(树形表格)
    easyui源码翻译1.32--Tree(树)
    easyui源码翻译1.32--TimeSpinner(时间微调)
    easyui源码翻译1.32--Tabs(选项卡)
    easyui源码翻译1.32--SplitButton(分割按钮)
    easyui源码翻译1.32--Slider(滑动条)
    easyui源码翻译1.32--SearchBox(搜索框)
    广度和深度-活在当下!
    IT人为了家庭和自己请保重自己~活在当下!
  • 原文地址:https://www.cnblogs.com/ForT/p/15925351.html
Copyright © 2020-2023  润新知