zoukankan      html  css  js  c++  java
  • Docker入门学习笔记

    Docker架构

    镜像(Image) Docker 镜像相当于root文件系统。

    容器(Container) 镜像和容器相当于,类和实例。容器可以被创建,启动,停止,删除

    仓库(Repository)仓库可以看成代码控制中心,保存镜像

    Docker Hello world

    docker run ubuntu:15.10 /bin/echo "Hello world"

    • run参数用来运行一个容器
    • ubuntu:15.10 表示镜像名+tag
    • /bin/echo "Hello world" 需要再容器中执行的命令

    运行交互式的容器

    docker run -i -t 让docker运行的容器实现对话

    -t : 在新容器内指定一个伪终端或终端

    -i : 允许你对容器内的标准输入输出进行交互

    通过exit或者CTRL+D来退出容器

    保持后台运行

    • -d 在后台运行容器,并且打印容器id

    容器状态STATUS:create | restarting | running or Up | removing | pause | exited (停止) | dead

    在宿主主机内使用docker logs,查看容器的标准输出

    通过docker stop停止容器,停止后容器不存在

    Docker 容器使用

    容器使用

    拉取镜像

    docker pull ubuntu
    

    启动容器

    docker run -it ubuntu /bin/bash
    

    启动已停止运行的容器

    docker ps -a 
    

    查看所有容器

    image-20210126142143284

    docker start <容器 ID>
    

    加入了-d参数默认不会进入容器,想要进入容器需要使用指令docker exec

    停止容器

    docker stop <容器 ID>
    

    停止的容器也可以是同docker restart重启

    进入容器

    在使用-d参数时,容器启动后会进入后台,此时想要进入容器,可以通过以下指令进入:

    • docker attach 使用此命令退出容器,会导致容器的停止
    • docker exec : 推荐使用,因此退出容器终端不会导致容器的停止
    docker exec -it <容器 ID> /bin/bash
    

    导出和导入容器

    导出本地某个容器,可以使用docker export命令

    docker export  容器 ID  > ubuntu.tar
    

    删除容器

    docker  rm  -f   容器 ID 
    

    清理掉所有终止状态

    docker container prune
    

    WEB应用容器

     docker pull training/webapp  # 载入镜像
     docker run -d -P training/webapp python app.py
    
    • -p :将容器内部使用的网络端口随机映射在主机上。同时P也可以设置端口 5000:5000

    image-20210126161038975

    网络端口的快捷方式

    通过docker ps 命令可以查看到容器的端口映射。

    docker还提供另外的快捷方式

    docker port可以查看指定容器的某个确定映射端口号

    查看应用日志

    动态展示 类似于 tail -f

    docker logs -f <容器 id>
    

    查看WEB应用程序容器的进程

    可以使用docker top产看容器内部运行的程序

    docker top     NAME OR ID
    

    Docker 镜像使用

    当运行容器时,使用的镜像如果在本地不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像下载

    列出镜像列表

    使用docker images 来列出本地镜像

    docker images
    

    image-20210126165538053

    • REPOSITORY : 表示镜像的仓库源
    • TAG:镜像的标签

    同一仓库源可以有多个TAG,代表整个仓库源的不同个版本。可以使用RESPOSITORY:TAG来定义不同的镜像

    获取一个新的镜像

    当本地使用不存在的镜像试试Docker就会自动下载镜像。如果要预先下载可以预先使用docker pull下载

    使用docker search搜索合适的镜像

    删除镜像

    docker rmi hello-world
    

    创建镜像

    当从 docker 镜像仓库中下载的镜像不能满足需求,可以通过 以下两种方式进行更改

    1. 从一创建的容器中更新镜像,并提交镜像
    2. 使用Dockerfile指令来创建一个新的镜像

    更新镜像

    更新镜像之前,使用镜像来创建一个容器

    docker run -t -i ubuntu:15.10 /bin/bash
    

    运行的容器内使用apt-get update 命令进行更新

    在完成操作之后,使用exit退出容器

    此时容器,是按照需求更改的容器。可以通过docker commit来提交容器副本

     docker commit -m="udpate message" -a="author" <容器ID> buntu:15.10
    

    参数说明:

    • -m:提交描述信息
    • -a:指定镜像的作者
    • buntu:15.10 ::指定要创建的目标镜像名称

    构建镜像

    使用docker build,创建新的镜像。需要创建Dockerfile文件,其中包含一组指令如何构建镜像

    FROM centos:6.7
    
    MAINTANER  Fisher "fisher@xx.com"
    RUN /bin/echo 'root:123456' | chpasswd
    EXPOSE 22
    CMD /usr/sbin/sshd -D
    
    

    每一个指令都会在镜像上添加一个新的层,前缀必须大写。

    FROM指定使用了哪个镜像源

    RUN指令告诉docker在镜像中执行什么命令,安装什么

    最后使用Docker文件,通过docker build来构建镜像

    docker build -t  personal/centos:6.7
    
    • -t : 指定要创建的目标镜像名
    • . : Dockerfile文件所在目录,可以指定Docker的绝对路径
    • -f : 指定要使用的Dockerfile路径

    设置镜像标签

    docker tag <镜像 ID>  personal/centos:dev
    

    通过此操作会添加一个镜像ID相同,TAG不同的镜像

    Docker容器连接

    容器中运行网络应用,可以通过 -p-P参数指定端口映射。

    网络端口映射

    • -P:是指容器内部端口随机映射到主机的高端口
    • -p:是容器内部端口绑定到指定的主机端口

    也可以指定容器绑定的网络地址

    docker run -d -p 127.0.0.1:5001:5000 person/webapp python app.py
    

    如此可以通过访问127.0.0.1:5001来访问容器的5000端口

    默认都是绑定tcp端口,如果要绑定UDP端口,可以在端口后面加上/udp

    docker run -d -p 127.0.0.1:5001:5000/udp person/webapp python app.py
    

    通过docker port NAME 5000 可以查看端口绑定情况

    Docker容器互联

    docker有一个连接系统允许将多个容器连接在一起,共享连接信息

    docker连接会创建一个父子关系,其中父容器可以看到子容器的信息

    容器命名

    当创建容器时,docker会自动进行命名。同时,可以使用--name表示来命名容器

    docker run -d --name NAME training/webapp python app.py
    

    新建网络

    先创建一个新的Docker网络

    docker network create -d bridge test-net
    
    • -d : 参数指定Docker网络类型,有bridge,overlay

    其中overlay网络类型用于Swarm mode

    连接容器

    运行一个容器并连接新建的test-net网络

    docker run -itd --name test1 --network test-net ubuntu /bin/bash
    

    打开新终端,在运行一个容器并记入到test-net网络

    docker run -itd --name test2 --network test-net ubuntu /bin/bash
    

    此时test1容器和test2容器建立了互联关系

    image-20210127154007240

    配置DNS

    可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容设置容器DNS:

    {
        "dns":[
            "114.114.114.114",
            "8.8.8.8"
        ]
    }
    

    配置完成需要重启docker生效

    查看容器的DNS是否生效使用以下命令

    docker run -it --rm ubuntu cat etc/resolv.conf
    

    手动指定容器配置

    只设置特定容器DNS

    docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu
    

    参数说明

    --rm :容器退出时自动清理容器内部的文件系统

    -h HOSTNAME 或--hostname=HOSTNAME :设定容器主机名,会被写道容器的/etc/hostname和/etc/hosts

    --dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。

    --dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com

    Docker仓库管理

    Docker Hub

    登录登出

    输入用户名密码,登录成功后,可以从docker hub上拉去自己账号下的全部镜像

    docker login  // docker logout
    

    拉取镜像

    docker search ubuntu
    

    将镜像下载到本地

    docker pull ubuntu
    

    推送镜像

    用户登陆后

    通过docker push 将镜像推送到Docker Hub

  • 相关阅读:
    获取一组radio按钮选中的值Value
    三相异步电动机过载保护及报警PLC控制
    2014年天津市第一批科技计划项目
    USB HID报告及报告描述符简介
    Log Explorer使用说明
    SQL日志文件的作用
    STM32 USB数据接收与数据发送程序流程分析
    多少人没熬过那三厘米!
    构建区域综合交通枢纽 京津冀将形成“一张图”
    Altium Designer下Gerber转PCB的方法(转)
  • 原文地址:https://www.cnblogs.com/ginko/p/14333981.html
Copyright © 2011-2022 走看看