• Docker的基本使用


    一、Docker的核心概念

    docker 包含四个基本概念:
     镜像(Image)
     容器(Container)
     仓库注册中心(Registry)
     仓库(Repository)

    理解了这四个概念,就理解了 docker 的整个生命周期了!

    1597733250429

    1)镜像

    Docker 镜像(Image)就是一个只读的模板。

    Docker 镜像可以用来创建 Docker 容器。

    Docker 镜像和 Docker 容器的关系,类似于 java 中 class 类与对象之间的关系。

    Docker 提供了一个很简单的机制来创建镜像或者更新已有的镜像,用户甚至可
    以直接从其他人那里下载一个已经做好的镜像来直接使用。

    2)容器

    Docker 利用容器(Container)来运行应用。

    容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都
    是相互隔离的、保证安全的平台。

    可以把容器看成是一个简易版的 Linux 环境(包括 ROOT 用户权限、进程空间、
    用户空间、网络等)和运行在其中的应用程序。

    3)Registry&Repository

    Registry 是集中存放镜像文件的场所。
    Repository 是对于其中的镜像进行分类管理。

    一个 Registry 中会有多个 Repository。
    一个 Repository 中会有多个不同 tag 的 Image。

    Registry 分为公有(public)和私有(private)两种形式。
     最大的公有 Registry 是 Docker Hub,存放了数量庞大的镜像供用户下载使用。
     国内的公开 Registry 包括 USTC、网易云、DaoCloud、AliCloud 等,可以供
    大陆用户更稳当快捷的访问。
     用户可以在本地创建一个私有 Registry。

    用户创建了自己的镜像之后就可以使用 push 命令将它上传的公有 Registry 或者
    私有 Registry 中,这样下次在另一台机器上使用这个镜像的时候,只需要从
    Registry 上 pull 下来运行就可以了。

    官方仓库:https://hub.docker.com/

    二、常用命令

    安装、启动

    参考:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors?spm=5176.12901015.0.i12901015.76b5525cYU7kug

    # step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装 Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    # Step 4: 开启(重启)Docker服务
    sudo service docker start/restart
    或者systemctl start docker.service、systemctl start docker
    

    配置镜像加速器(可选)

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://31py2ung.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    镜像操作

    # 列出镜像
    docker images 
    # 搜索镜像
    docker search 镜像名称
    # 拉取镜像
    docker pull <镜像名:tag>
    # 删除镜像
    docker rmi repository:tag 
    docker rmi imageID
    # 删除所有镜像
    docker rmi $(docker images -q) 
    

    容器操作

    # 创建并运行容器
    以交互方式运行容器: 
    docker run -i -t --name 容器名称 repository:tag /bin/bash 
    docker run -it --name 容器名称 imageID /bin/bash 
    以守护进程方式运行容器: 
    docker run -di --name 容器名称 repository:
    docker run -di --name 容器名称 imageID 
    注意:通过 run 创建并进入容器之后,如果使用 exit 命令退出容器,则容器停止。 
    再次进入该容器,先使用 start 启动容器,再使用 exec/attach 命令进入容器。>
    1)启动容器 
    docker start 容器名称或者容器ID 
    2)进入容器
    进入正在运行的容器的命令如下: 
    docker exec -it 容器名称或者容器ID /bin/bash 
    docker attach 容器名称或者容器ID 
    两者之间的区别: 
    attach 进入容器之后,如果使用 exit 退出容器,则容器停止。 
    exec 进入容器之后,使用 exit 退出容器,容器依然处于运行状态。
    ========================================================
    # 删除容器
    docker rm <容器名 or ID>
    # 查看容器日志
    docker logs -f <容器名 or ID>
    # 查看正在运行的容器
    docker ps
    # 查看所有的容器,包括已经停止的。
    docker ps -a 
    # 删除所有容器
    docker rm $(docker ps -a -q)
    # 停止、启动、杀死指定容器
    docker start <容器名 or ID> # 启动容器
    docker stop <容器名 or ID> # 停止容器
    docker kill <容器名 or ID> # 杀死容器
    

    端口、数据卷

    # 后台运行 docker run -d <Other Parameters>
    docker run -d -p 127.0.0.1:33301:22 centos6-ssh
    # 暴露端口: 一共有三种形式进行端口映射
    docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
    # 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
    docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
    # 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
    docerk -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
    # 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
    # 映射数据卷
    docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址
    

    复制文件

    docker cp 源文件 目标文件 
    ======================
    比如: 
    docker cp /root/boot.war my-centos:/usr/local/ 
    注意:源文件可以是宿主机器也可以是容器中的文件,同样,目标文件可以是容
    器也可以是宿主机器的文件。 
    

    制作镜像

    docker commit 容器名称或者容器ID 新镜像名称 
    

    在容器内部安装vim(不建议使用,可使用挂载)

    apt-get update
    apt-get install vim
    

    查看容器详细信息

    docker inspect 容器名称
    

    查看容器启动日志

    docker logs 容器名称
    

    三、应用

    A)nginx

    1)拉取镜像

    docker pull nginx
    

    2)创建nginx容器、指定端口为80

    docker run -di --name=my-nginx -p 9080:80 nginx
    

    3)浏览器验证

    1597736617403

    B)MySQL

    1)拉取镜像

    # 查找镜像
    docker search mysql
    # 拉取相应镜像
    docker pull mysql:5.7
    

    2)创建mysql容器

    docker run -di --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
    

    3)查看容器

    1598499506367

    4)使用工具连接测试

    1598500159999

    四、推荐文章

    https://github.com/MrFiona/Docker-Summary/tree/master/Docker%E4%B8%AA%E4%BA%BA%E7%AC%94%E8%AE%B0

    "我们所要追求的,永远不是绝对的正确,而是比过去的自己更好"
  • 相关阅读:
    centos7系统最小系统安装并配置网络
    解决 JAAVA springboot 数据存储到数据库数据显示??的方案
    vue scoped
    Vue插件
    Git命令学习
    深度拷贝
    ES6学习_简化对象写法
    ES6学习_字符串的拼接
    ES6学习_变量的解构赋值
    ES6学习_const关键字
  • 原文地址:https://www.cnblogs.com/zomicc/p/13527704.html
Copyright © 2020-2023  润新知