美文网首页
虚拟化,容器的理解

虚拟化,容器的理解

作者: 赛亚人之神 | 来源:发表于2019-04-12 17:13 被阅读0次

    要想使用 linux 容器,至少 linux 内核要支持 namespaces,cgroups(control groups),可以在用户空间,使用一些工具,并利用linux内核所提供的这些技术,从而实现容器运行。

    docker 在容器运行、使用简化的道路上更进一步,提供了镜像(而且是分层构建镜像),使得容器技术的使用更加被简化

    docker 程序环境:
        环境配置文件:
            /etc/sysconfig/docker-network
            /etc/sysconfig/docker-storage
            /etc/sysconfig/docker
        unit file:
            /usr/lib/sytemd/system/docker.service
    
        Docker Registry 配置文件
            /etc/containers/registries.conf
    
        ----------------------------- 上面的环境我安装完 docker-cn 后并未在相关路径下找到,有待确认 ----------------------------
    
        docker-ce
            配置文件: /etc/docker/daemon.json
    
            
    docker 镜像加速
        docker cn
        阿里云加速器
        中国科技大学
        {
            "registry-mirrors": ["https://registry.docker-cn.com"]
        }
    
        注意:registry-mirrors 的值是个数组,可以配置多个
    
    alpine: 镜像的微型发行版,提供了程序运行的基础环境,但是体积非常小,(缺点:缺少调试工具,建议在测试中使用)
    
    
    docker image
        作用: Manage images
        语法: docker image COMMAND
    
        Commands:
          build       Build an image from a Dockerfile
          history     Show the history of an image
          import      Import the contents from a tarball to create a filesystem image
          inspect     Display detailed information on one or more images
          load        Load an image from a tar archive or STDIN
          ls          List images
          prune       Remove unused images
          pull        Pull an image or a repository from a registry
          push        Push an image or a repository to a registry
          rm          Remove one or more images
          save        Save one or more images to a tar archive (streamed to STDOUT by default)
          tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
    
    
    docker container
        作用: Manage containers
        语法: docker container COMMAND
    
        Commands:
          attach      Attach local standard input, output, and error streams to a running container
          commit      Create a new image from a container's changes
          cp          Copy files/folders between a container and the local filesystem
          create      Create a new container
          diff        Inspect changes to files or directories on a container's filesystem
          exec        Run a command in a running container
          export      Export a container's filesystem as a tar archive
          inspect     Display detailed information on one or more containers
          kill        Kill one or more running containers
          logs        Fetch the logs of a container
          ls          List containers
          pause       Pause all processes within one or more containers
          port        List port mappings or a specific mapping for the container
          prune       Remove all stopped containers
          rename      Rename a container
          restart     Restart one or more containers
          rm          Remove one or more containers
          run         Run a command in a new container
          start       Start one or more stopped containers
          stats       Display a live stream of container(s) resource usage statistics
          stop        Stop one or more running containers
          top         Display the running processes of a container
          unpause     Unpause all processes within one or more containers
          update      Update configuration of one or more containers
          wait        Block until one or more containers stop, then print their exit codes
    
    
    docker run:
        作用:Run a command in a new container
        
        语法:
            docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
        
        Options:
            -a, --attach list                    Attach to STDIN, STDOUT or STDERR 【附加到标准输入,标准输出,标准错误输出】
            -d, --detach                         Run container in background and print container ID 【容器在后台运行)
            -e, --env list                       Set environment variables【设置环境变量】
            -h, --hostname string                Container host name 【设置容器主机名】
            -i, --interactive                    Keep STDIN open even if not attached 【始终保持标准输入打开】
            -l, --label list                     Set meta data on a container【设置容器元数据】
            --name string                        Assign a name to the container,【指定容器名称】
            --network string                     Connect a container to a network (default "default") 【指定网络 默认是 bridge】
            --rm                                 Automatically remove the container when it exits 【当容器停止后自动删除容器,英文说明有问题】
            -t, --tty                            Allocate a pseudo-TTY,【分配伪终端】
            -v, --volume list                    Bind mount a volume 【指定卷】
            -w, --workdir string                 Working directory inside the container 【指定工作目录】
    
    
        可以使用 docker network ls 查看所有网络信息
    
    docker network
        作用:Manage networks
        语法:docker network COMMAND
    
        Commands:
          connect     Connect a container to a network
          create      Create a network
          disconnect  Disconnect a container from a network
          inspect     Display detailed information on one or more networks
          ls          List networks
          prune       Remove all unused networks
          rm          Remove one or more networks
    
    
    
    例子:
        1、 下载一个 busybox 镜像,并在 busybox 中使用 httpd 命令启动一个 web 服务,打印出 hello docker
            docker image pull busybox:latest
            docker run --name b1 --rm -it busybox:latest
                注意:这里启动容器时使用了 --rm 选项,意思是容器停止后容器会自动被删除
    
            在 busybox 交互式命令中,创建 httpd 所需的文件
                mkdir /home/data -p
                echo "hello docker" > /home/data/index.html
                httpd -f -h /home/data/
    
                备注:
                    httpd:
                        所用: Listen for incoming HTTP requests
                        -f              Don't daemonize 【避免后台运行】
                        -v[v]           Verbose
                        -p [IP:]PORT    Bind to IP:PORT (default *:80)
                        -h HOME         Home directory (default .) 【指定家目录位置】
    
            启动好 httpd 服务后,使用 docker container inspect b1 查看【b1】容器的 ip 为 172.17.0.2
            另外打开一个终端,使用 curl 172.17.0.2 看到控制台输出了 “hello docker”
    
        2、 下载并运行一个名为 web1 的 nginx 容器
            docker run --name -d web1
            docker ps                       查看所有运行中的容器
            docker inspect web1             查看容器的 ip 地址
            curl 172.17.0.3                 使用 curl 访问 ip,查看输出内容
    
        3、  下载并运行一个名为 redis 的容器
            docker run --name redis -d redis
            docker ps
            docker exec -it redis /bin/sh   执行 reids 容器中的 /bin/sh 程序
            redis-cli                       运行 redis-cli,测试可以正常对 redis 进行操作
    
    
            注意:
                docker exec
                    作用:Run a command in a running container
                    语法: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    
                    Options:
                      -d, --detach               Detached mode: run command in the background
                          --detach-keys string   Override the key sequence for detaching a container
                      -e, --env list             Set environment variables
                      -i, --interactive          Keep STDIN open even if not attached
                          --privileged           Give extended privileges to the command
                      -t, --tty                  Allocate a pseudo-TTY
                      -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
                      -w, --workdir string       Working directory inside the container
    
        4、  使用 docker logs web1 查看容器的日志
    
    
    
    基于容器创建镜像,使用 docker commit 指令
        作用: Create a new image from a container's changes
        语法: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
        Options:
          -a, --author string           Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
          -c, --change list             Apply Dockerfile instruction to the created image
          -m, --message string          Commit message
          -p, --pause                   Pause container during commit (default true)
    
        例子:创建 nginx 容器,将其重新打成镜像,tag号为v1
    
            1. docker commit -p web1 nginx:v1
            2. docker commit -p web1
               docker tag conatiner-id ngixn:v1
    
        使用 docker inspect busybox 查看 busybox 的默认运行的程序是位于 /bin 下的 sh,如何修改呢?
        修改镜像默认的运行程序: 使用 -c 选项
            docker commit -p -c 'CMD ["/bin/httpd","-f","-h","/home/data"]' b1 mybusybox:v3
    
    
    docker push
        语法: docker push [OPTIONS] NAME[:TAG]
        作用:Push an image or a repository to a registry
    
        Options:
              --disable-content-trust   Skip image signing (default true
              
    docker login
        语法: docker login [OPTIONS] [SERVER]
        作用:Log in to a Docker registry
    
        Options:
          -p, --password string   Password
              --password-stdin    Take the password from stdin
          -u, --username string   Username
    

    相关文章

      网友评论

          本文标题:虚拟化,容器的理解

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