Docker入门

作者: 上行彩虹人 | 来源:发表于2020-10-10 21:57 被阅读0次

    Docker的名词

    镜像(image):
    就是一个模板,可以启动多个容器:run
    容器(container):
    独立运行一个或多个
    启动、停止、删除
    可以理解为一个简易的linux系统
    仓库(repository):
    存放容器的地方;
    共有和私有仓库

    安装Docker

    环境准备

    1、CentOS 7
    2、使用Xshell连接服务器

    安装

    官网文档有安装文档

    1、卸载旧的docker
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    2、安装依赖包
    sudo yum install -y yum-utils
    3、设置镜像仓库
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外的
    4、安装 docker-ce社区版本 ee企业版
    yum makecache fast # 清空缓存
    sudo yum install docker-ce docker-ce-cli containerd.io
    5、启动docker
    sudo systemctl start docker
    docker version # 是否启动成功
    6、测试helloworld
    docker run hello-world # 在线下载
    7、查看hello-world的镜像
    docker images
    

    卸载docker

    1、卸载docker
    sudo yum remove docker-ce docker-ce-cli containerd.io
    2、删除目录,所有的文档都在docker目录下
    sudo rm -rf /var/lib/docker
    

    启动与关闭

    1、开启docker服务
    systemctl start docker 
    2、查看是正在运行的容器
    docker ps
    3、停止容器
    docker stop 容器ID
    4、关闭docker
    service docker stop
    

    Docker常用命令

    帮助命令

    docker info
    docker --help
    

    文档命令地址
    https://docs.docker.com/reference/

    镜像命令

    docker images # 查看所有镜像
              -a, --all             Show all images (default hides intermediate images)
              -q, --quiet           Only show numeric IDs
    
    docker search mysql --filter=STARS=3000 # 过滤掉3000star以下的 
    下载镜像
    docker pull mysql # 默认下载最新版本, 分层下载(联合文件系统)
    docker pull mysql:5.7
    删除镜像
    docker rmi 镜像ID # 空额删除多个镜像
    删除所有
    docker rmi $(docker images -aq)
    

    容器命令

    说明:进入镜像才可以创建容器
    容器新建和启动

    docker run [可选参数]
          --name="name"
          -d # 后台方式运行
          -it # 使用交互式方式运行,进入容器查看内容
          -p # 指定容器端口 3344:80
          -P # 随机指定端口
    启动进入容器
    docker run -it centos /bin/bash
    
    退出
    exit # 关闭并退出
    Ctrl + P + Q # 不停止退出
    列出所有运行容器
    docker ps
                -a # 当前和历史运行容器
                -n=1 # 显示1个结构
                -q # 只显示容器编号
    删除容器
    docker rm 容器ID
    docker rm -f $(docker ps -aq)
    docker ps -a -q|xargs docker rm
    
    启动和停止容器
    docker start ID
    docker restart ID
    docker stop ID
    docker kill ID
    

    其他常用命令

    后台启动
    docker run -d 镜像名 # 启动就会停止,因为没有前台进程
    查看日志
    docker logs -tf --tail 10 ID # 显示最新10条日志
    查看容器的进程信息
    docker top ID
    查看元数据
    docker inspect ID
    
    进入当前运行的容器
    docker exec -it ID /bin/bash # 进入容器开启一个新的终端
    docker attach  ID # 进入正在运行的终端
    从容器内拷贝文件到主机
    docker cp ID:容器内路径 目的主机路径 
    docker stats # 查看docker cpu的运行状态
    
    命令小结

    安装Nginx例子

    docker search nginx # 推荐到hub上搜索
    docker run -d --name nginx_chini -p 3344:80 nginx 
    curl localhost:3344 # 测试是否安装启动成功
    

    安装Tomcat

    docker run -it --rm tomcat:9.0 # 用完即删
    

    提交自己的镜像

    用commit保存当前容器的状态,使用commit来提交,以获得一个新的镜像

    docker commit -m="注解" -a ="作者"  ID 目标镜像名:[TAG]
    docker commit -a="chini" -m="this is a test" 354c3d6e4a17 tomcat:9.9
    

    容器数据集

    卷技术:容器的持久化和同步,容器间数据共享

    数据独立存储在容器外,防止容器删除之后数据丢失

    1、使用-v挂载:双向绑定,容器内外操作自动同步
    docker run -it -v 主机目录:容器目录
    

    实战mysql

    -v 挂载内部:可以bu
    -d 后台运行
    -p 端口映射
    -e 设置密码
    docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
    # 进入mysql
    mysql -u root -p
    show databases
    use tatabase_name
    

    具名挂载和匿名挂载

    # 匿名
    docker run -d -P --name nginx01 -v /ect/nginx nginx
    # 具名:卷名(chini-nginx)方便找到卷,建议使用
    docker run -d -P --name nginx01 -v chini-nginx:/ect/nginx nginx
    # 查看位置
    docker volume inspect chini-nginx
    #######################
    -v 容器内路径 匿名
    -v 卷名:容器内路径 具名
    -v /主机路径:容器内路径 指定路径名挂载
    

    DockerFile 用来构建docker镜像文件!(commit)
    脚本文件,用于生产镜像

    # 编写dockerfile文件
    FROM centos
    VOLUME ["volume01","volume02"] # 挂载卷 匿名
    CMD echo "end-------"
    CMD /bin/bash
    
    docker build -f dockerfile1 -t chini/centos:1.0 .
    

    容器间数据共享 --volumes-from
    也可以做配置信息的传递,数据的生命周期一直持续到没有人使用为止

    # docker02 集成docker01挂载的卷
    # 即是docker01被删除之后文件依旧在
    docker run -it docker02 --volumes-from docker01 ID
    

    DockerFile

    用来构建镜像文件
    1、编写douckerfile文件(dockerfile是面向开发的)
    2、docker build 构建成为一个镜像
    3、docker run 运行镜像
    4、docker push 发布镜像(DockerHub,阿里云镜像)

    # dockerfile 基础知识
    每个指令都会提交一个层
    指令关键字都是大写
    #表示注释
    
    # 基本指令
    FROM 基础镜像
    MAINTAINER 镜像是谁写的 姓名+邮箱
    RUN 镜像构建的时候需要运行的命令
    ADD 步骤,逐渐创建层
    WORKDIR 镜像的工作目录
    VOLUME 挂载目录
    EXPOSE 指定暴露端口 替代命令行中-p
    ONBULID 
    COPY 将文件拷贝到镜像中
    CDM 指定容器启动时运行的指令(只执行最后一条)
    ENTRYPOINT 区别于CMD可以追加命令,可以在默认命令中追加命令
    ENV 设置环境变量
    

    实战测试
    创建自己的centos

    # 1、dockerfile
    FROM centos
    MAINTAINER Chini<wchen@qq.com>
    ENV MYPATH /usr/local 
    WORKDIR $MYPATH # 默认进入docker的根目录
    RUN yum -y install vim
    RUN yum -y install net-tools
    EXPOSE 80
    CMD echo $MYPATH
    CMD /bin/bash
    # 2、构建镜像
    docker build -f dockerfilename -t mycentos:0.1 .
    

    列出本地镜像的历史,拿到一个镜像可以学习官方是怎么做的。

    docker history ID
    

    发布镜像到dockerhub

    1、注册账号,确定可以登录
    2、在服务器上提交
    docker login -u 
    docker push 作者名/name:[TAG] # 尽量带版本号
    
    docker小结

    Docker网络

    相关文章

      网友评论

        本文标题:Docker入门

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