美文网首页
docker学习笔记——安装及基础命令

docker学习笔记——安装及基础命令

作者: 无昵称啊 | 来源:发表于2021-01-26 19:01 被阅读0次

    一、docker安装(Cenos7操作系统)

    1)检查前提条件
    uname -a(检查内核版本,需要高于3.8)
    grep device-mapper /proc/devices(检查是否存在Device Mapper)
    yum instal -y device-mapper(如果不存在device-mapper则安装)
    modprobe dm_mod(加载Device Mapper模块)
    2)安装Docker
    yum install -y epel-release
    yum install -y docker-io
    3)启动Docker守护进程
    systemctl start docker(启动docker)
    systemctl enable docker(启动docker守护进程)

    二、docker基础操作

    docker info    ---->   查看当前docker的所有容器、镜像及驱动等详细信息
    docker run -i -t <image name> /bin/bash    ---->    启动一个指定镜像的Docker容器(-i 保证容器STDIN是开启的,-t为创建的容器分配一个伪tty终端,这两个命令行参数为新创建的容器提供了一个交互式shell)
    docker run --name <docker name> -i -t <image name>:<version> /bin/bash    ---->    启动一个指定容器名称及镜像版本的Docker容器
    docker run -d -p <host ip>:<host port>:<docker port> <image name>    ---->    后台一个对应端口映射的Docker容器
    docker start <docker name/docker id>    ---->    启动容器
    docker attach <docker name/docker id>    ---->    进入到容器会话中
    docker run --name <容器名称> -d <镜像名称> /bin/sh -c "while true; do echo hello world; sleep 1; done"    ---->    创建守护式容器(docker run使用了-d参数,Docke会将容器放到后台运行)
    docker ps    ---->    显示当前运行中的容器
    docker ps -a    ---->    显示当前所有容器
    docker logs <docker name>    ---->    获取容器的日志
    docker logs --tail 10 -f <docker name>    ---->    始终获取容器最后10行的日志
    dokcer top <docker name>     ---->    查看容器内的进程
    docker exec -d <docker name> <cmd>    ---->    在容器后台运行命令
    docker exec -i -t <docker name> /bin/bash    ---->    在容器内运行交互式命令
    docker stop <docker name/docker id>    ---->    停止守护进程
    docker run --restart=always --name <docker name> -d <image name> /bin/sh        ---->    创建一个自动重启的容器,当--restart参数的为on-failure:5时,则可设置容器最多重启5次
    docker inspect <docker name>        ---->    获取指定容器的详细信息
    docker inspect --format '{{.Name}} {{.State.Running}}'            ---->    指定多个容器,并显示每个容器的输出结果
    docker kill <docker name/docker id>        ---->    强制停止容器
    docker rm <docker name/docker id>        ---->    删除容器
    docker rm 'docker ps -a -q'        ---->    删除所有容器(docker ps -a表示列出了所有的容器,-q表示只返回容器的ID,获取所有容器的ID信息传给docker rm)

    三、docker镜像与仓库

    1、镜像与仓库
    Docker镜像最底层是一个引导文件系统(bootfs),当一个容器启动后,容器将会被移动到内存中,而引导文件系统将会被卸载,以留出更多内存空间供initrd磁盘镜像使用。第二层是root文件系统(rootfs),它位于引导文件系统之上。Docker通过联合加载技术在roofs上,一次同时加载多个文件系统,将各层文件系统叠加到一起,最终仅以一个文件系统呈现给用户。Docker将这样的文件系统称作镜像。

    Docker文件系统层

    父镜像:B镜像位于A镜像下面,则B镜像称为A镜像的父镜像
    基础镜像:镜像栈最底部的镜像

    Docker会在会在镜像的最顶层加载一个读写文件系统,供Docker运行程序在读写层执行。Docker使用写时复制的机制来对文件进行处理。写时复制:当创建一个新容器,Docker会构建一个镜像栈,并在栈的最顶端添加一个读写层,每次修改文件,Docker首先会从该读写层下面的只读层中获取该文件的复制副本,在通过修改读写层的文件副本来实现操作。Docker的写实复制机制+镜像分层框架,使用户可以快速构建镜像并运行包含应用服务的容器。

    顶层仓库:Docker内部人员管理的公共仓库
    用户仓库:Docker用户创建的个人仓库

    docker images ubuntu:latest    ---->   列出最新ubuntu镜像
    docker pull fedora:20    ---->   从顶层仓库拉取fedora:20镜像到本地
    docker search puppet    ---->   查找公共可用puppet镜像

    2、构建自定义镜像
    创建DockerHub账号:
    通过https://hub.docker.com/signup注册一个Docker Hub账号并激活
    本地通过docker login命令登录账号
    1)commit命令创建镜像:
    a:使用基础镜像创建并运行一个容器
    b:进入容器安装或设置需要的服务及环境
    c:退出容器,执行命令docker commit -m="<comment>" --author="<author>" <docker id> <customed image name>:<tag>
    2)Dockerfile构建镜像:
    a:编写一个Dockerfile文件

    dockerfile配置

    b:执行命令docker build -t <image name>:<tag name> -f <docker file name> .
    c:如果build失败,可以执行命令docker run -it <最后成功那一步的docker id> /bin/bash

    docker images <image name>    ---->   查看上步中构建的本地镜像
    docker history <image name/id>    ---->   查看镜像的历史记录
    docker push <image repository>:<tag>    ---->   上传到指定仓库
    docker rmi <image name/id>    ---->   删除镜像(==docker image rm <image name/id>)
    docker port <dokcer name/id>    ---->   查看容器的端口映射

    四、docker容器网络

    1、新建网络:
    docker network create -d bridge test-net   (-d:参数指定 Docker 网络类型,有 bridge、overlay。)

    2、连接容器:
    docker run -itd --name test1 --network test-net ubuntu /bin/bash

    3、设置容器DNS:
    1)全局设置容器dns

    可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
    { "dns" : [ "114.114.114.114", "8.8.8.8" ]}
    重启 docker后,执行命令docker run -it --rm ubuntu cat etc/resolv.conf,会输出容器的 DNS 信息。

    2)手动指定容器的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学习笔记——安装及基础命令

          本文链接:https://www.haomeiwen.com/subject/kqjizktx.html