zoukankan      html  css  js  c++  java
  • 【docker学习一】CentOS7.5+Docker安装及使用「安装、查看、pull、创建、进入镜像」

    记录安装配置以及使用的过程,可能会有多处摘抄,已注明照抄地址,侵删。

    是什么:个人理解,是一种移植性很强的虚拟机,支持版本控制(类似于git),同一个服务器可以运行多个docker容器,每个docker容器都有一个独立的虚拟环境。

    本人环境:

    虚拟机:Oracle virtualBOX  

    版本:cetOS7.5 mimi x64

    PC系统:macOS X

    1、基本概念

    摘抄地址:https://yq.aliyun.com/articles/640826?spm=a2c4e.11163080.searchblog.26.4c1d2ec1xDONgS

    基本概念主要有三个:

    ● 镜像(Image)
       ● 一个只读的模板,镜像可以用来创建 Docker 容器
       ● 用户基于镜像来运行自己的容器。镜像是基于 Union 文件系统的层式结构
       ● 可以简单创建或更新现有镜像,或者直接下载使用其他人的。可以理解为生成容器的『源代码』
    ● 容器(Container)
       ● 容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)
       ● 可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
       ● 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
    ● 仓库(Registry)
       ● 集中存放镜像文件的场所,可以是公有的,也可以是私有的
       ● 最大的公开仓库是 Docker Hub
       ● 国内的公开仓库包括 Docker Pool 等
       ● 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
       ● Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务

    另外 Docker 采用的是客户端/服务器架构,客户端只需要向 Docker 服务器或守护进程发出请求即可完成各类操作。那么问题来了,我们能用 Docker 来做什么呢?我们可以:

    ● 统一、优化和加速本地开发和构建流程
    ● 保证不同的环境中可以得到相同的运行结果
    ● 创建隔离环境用于测试

    Docker 可以提供的隔离有:

    ● 文件系统隔离:每个容器都有自己的 root 文件系统
    ● 进程隔离:每个容器都运行在自己的进程环境中
    ● 网络隔离:容器间的虚拟网络接口和 IP 地址都是分开的
    ● 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配给每个 Docker 容器

    tip、centOS7 ip配置

    1、查看网卡命令(ifconfig):ip addr 

    2、编辑配置文件

    vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

    3、开启自动获取ip修改:ONBOOT=yes

    4、重启网卡

    systemctl restart network

    2、安装 vim(可选)

    yum install vim

    3、开始安装docker

    摘抄地址(测试可用)https://www.cnblogs.com/yufeng218/p/8370670.html

    1、通过 uname -r 命令查看你当前的内核版本(必须高于3.10)
    
    2、更新yum源:sudo yum update
    
    3、卸载旧版本:sudo yum remove docker docker-common docker-selinux docker-engine
    
    4、依赖包安装:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    5、添加yum源:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    6、查看版本库: yum list docker-ce --showduplicates | sort -r
    
    7、安装:sudo yum install docker-ce
    
    8、启动并开机启动:
    
    sudo systemctl start docker
    
    sudo systemctl enable docker
    
    9、查看是否安装成功:docker version

    4、使用

    1、我申请了一个docker账号,平时使用无需申请账号

    2、下载一个镜像,或者已有的docker镜像,可以用来创建容器对象。

    我安装的是centOS7,执行命令:cat /etc/issue 显示系统为centOS7.5

    3、执行完立即关闭容器

    执行docker命令:docker run ubuntu echo 'Ubuntu run'

    由于本地不存在名为ubuntu的镜像,所以系统自动下载了一个,但是上面的命令指示启动容器后会立即关闭。

    4、启动一个容器

    a、存在则运行,不存在则下载:docker run -i -t ubuntu /bin/bash

    b、手动下载:

    [root@localhost mydc]# docker search centos
    NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    centos                             The official build of CentOS.                   4722                [OK]                
    ansible/centos7-ansible            Ansible on Centos7                              118                                     [OK]
    jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   99                                      [OK]
    consol/centos-xfce-vnc             Centos container with "headless" VNC session…   63                                      [OK]
    
    [root@localhost mydc]# docker pull centos/mysql-57-centos7 
    Using default tag: latest
    latest: Pulling from centos/mysql-57-centos7
    256b176beaff: Pull complete 
    
    Digest: sha256:c8a8323721c60a49b1792d31a7892731c741d58c238d77b42f0dcf8d7c32c1b4
    Status: Downloaded newer image for centos/mysql-57-centos7:latest
    [root@localhost mydc]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    centos/mysql-57-centos7   latest              34300611d53e        9 days ago          445MB
    ubuntu                    latest              cd6d8154f1e1        13 days ago         84.1MB

    5、exit 退出容器

    6、查看

    查看容器docker ps [-a] [-l]

    [root@localhost admin]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
    3b89e931a7a7        ubuntu              "/bin/bash"         45 hours ago        Exited (0) 45 hours ago                       stoic_villani
    12f34cfcec6d        ubuntu              "echo run"          45 hours ago        Exited (0) 45 hours ago                       stoic_bose
    [root@localhost admin]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
    3b89e931a7a7        ubuntu              "/bin/bash"         45 hours ago        Exited (0) 45 hours ago                       stoic_villani
    [root@localhost admin]# 

    查看镜像:

    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu              latest              cd6d8154f1e1        13 days ago         84.1MB

    7、重新启动停止的容器docker start [-i] 容器名

    详细命令:https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217

    8、查看-进入-启动-退出

    [root@localhost admin]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
    3b89e931a7a7        ubuntu              "/bin/bash"         46 hours ago        Exited (0) 46 hours ago                       stoic_villani
    12f34cfcec6d        ubuntu              "echo run"          46 hours ago        Exited (0) 46 hours ago                       stoic_bose
    [root@localhost admin]# docker start stoic_villani
    stoic_villani
    [root@localhost admin]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
    3b89e931a7a7        ubuntu              "/bin/bash"         46 hours ago        Up 16 seconds                                 stoic_villani
    12f34cfcec6d        ubuntu              "echo run"          46 hours ago        Exited (0) 46 hours ago                       stoic_bose
    [root@localhost admin]# docker run -t -i stoic_violani /bin/bash
    Unable to find image 'stoic_violani:latest' locally
    docker: Error response from daemon: pull access denied for stoic_violani, repository does not exist or may require 'docker login'.
    See 'docker run --help'.
    [root@localhost admin]# docker run -t -i ubuntu /bin/bash
    root@b5c0cd216bed:/# pwd
    /
    root@b5c0cd216bed:/# uname
    Linux
    root@b5c0cd216bed:/# cat /etc/issue
    Ubuntu 18.04.1 LTS 
     l
    
    root@b5c0cd216bed:/# exit
    exit
    [root@localhost admin]# cat /etc/issue
    S
    Kernel 
     on an m
    
    [root@localhost admin]# 

    9、自定义创建镜像(验证中)

    参考地址:https://blog.csdn.net/rznice/article/details/52211620

    [root@localhost mydocker]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
    centos/mysql-57-centos7   latest              34300611d53e        9 days ago           445MB
    ubuntu                    latest              cd6d8154f1e1        13 days ago          84.1MB
    #创建目录
    [root@localhost admin]# mkdir mydocker
    #创建镜像必要的配置文件,内容再下面
    [root@localhost admin]# touch Dockerfile
    [root@localhost mydocker]# ls
    Dockerfile
    [root@localhost mydocker]# docker build --help
    #docker build -t 新镜像的名字 -f 自定义配置文件的目录(目前在当前目录) 生成后的镜像存储位置
    [root@localhost mydocker]# docker build -t ubuntu_mine -f  Dockerfile  ./
    
    Sending build context to Docker daemon  2.048kB
    Successfully built d0ec321b73c6
    Successfully tagged ubuntu_mine:latest
    #查看自己创建的镜像
    [root@localhost mydocker]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
    ubuntu_mine               latest              d0ec321b73c6        About a minute ago   84.1MB
    centos/mysql-57-centos7   latest              34300611d53e        9 days ago           445MB
    ubuntu                    latest              cd6d8154f1e1        13 days ago          84.1MB
    [root@localhost mydocker]# 

    Dockerfile文件的内容:

    #ubuntu 是我本地存在的镜像名称
    FROM ubuntu
    #添加作者等描述信息
    MAINTAINER The CentOS Test Images - test
    #构建完成执行的命令
    RUN mkdir -p /usr/app
    RUN ls
    RUN pwd
    #构建过程中添加环境变量、安装软件等其他操作。。。
    

    ================================================================================

    实践:

    docker  ps

    docker  exec -it  XXXXX(container ID)  /bin/bash

  • 相关阅读:
    NET设计模式 第三部分 结构型模式(7):适配器模式(Adapter Pattern)
    NET设计模式 第二部分 创建型模式(6):创建型模式专题总结(Creational Pattern)
    NET设计模式 第二部分 创建型模式(5):原型模式(Prototype Pattern)
    NET设计模式 第二部分 创建型模式(4):工厂方法模式(Factory Method)
    .NET设计模式 第二部分 创建型模式(3)—建造者模式(Builder Pattern)
    .NET设计模式 第二部分 创建型模式(2)—抽象工厂模式(Abstract Factory)
    .NET设计模式 第二部分 创建型模式(1)—:单件模式(Singleton Pattern)
    .NET设计模式系列文章
    转:Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
    转:Python字典与集合操作总结
  • 原文地址:https://www.cnblogs.com/the-fool/p/11054099.html
Copyright © 2011-2022 走看看