zoukankan      html  css  js  c++  java
  • docker:(1)docker基本命令使用及发布镜像

    docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用

    省去复杂的配置工作

    比如java web项目部署,如果是新部署,需要装系统,配置jdk,maven,sql,redis等各类环境,费时费力还容易出错,

    而docker就可以省去配置环境的麻烦,直接让你把war包丢进去,实现分分钟部署一个项目

    从头开始简单的说下docker的使用

    本次讲解环境为ubuntu 16.04

    首先给ubuntu安装docker,我安装的是docker ee, 安装方法:https://docs.docker.com/engine/installation/linux/docker-ee/ubuntu/

    安装好之后,便是启动docker

    sudo service docker start

    与之对应的停止dokcer服务命令就是stop了

    sudo service docker stop

    然后通过--version可以查看运行的docker版本

    sudo docker --version

    启动后,是没有任何镜像的,不过可以通过pull命令获取相关镜像

    xiaochangwei@ubuntu:~/test$ 
    xiaochangwei@ubuntu:~/test$ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    tomcat              latest              17eb1d58bf8c        About an hour ago   505MB
    ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB
    xiaochangwei@ubuntu:~/test$ 
    xiaochangwei@ubuntu:~/test$ 
    xiaochangwei@ubuntu:~/test$ sudo docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    e7bb522d92ff: Pull complete 
    6edc05228666: Pull complete 
    cd866a17e81f: Pull complete 
    Digest: sha256:cf8d5726fc897486a4f628d3b93483e3f391a76ea4897de0500ef1f9abcd69a1
    Status: Downloaded newer image for nginx:latest
    xiaochangwei@ubuntu:~/test$ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    tomcat              latest              17eb1d58bf8c        About an hour ago   505MB
    nginx               latest              3f8a4339aadd        9 days ago          108MB
    ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB
    xiaochangwei@ubuntu:~/test$ 
    xiaochangwei@ubuntu:~/test$ 
    sudo docker pull nginx 默认获取最新版本,即TAG为latest的,如果要获取其他版本,则需要使用 sudo docker pull nginx:xxxx

    获取镜像后,通过docker run使其运行起来

    sudo docker ps -a 列出所有容器, 不加 -a 仅列出正在运行的,像退出了的或者仅仅只是创建了的就不列出来
    sudo docker run -d -p 8800:80 --name nginx_xiao  nginx #运行指定的镜像
    dudo docker run -d --privileged=true -p 83:80 --name nginx83 nginx #提升权限
    #宿主主机端口:容器内部端口 
      -d 后台运行
      -p 8800:80 是指定对外暴露的端口 容器内部用80 对应外部宿主主机的的8800 代理一样
      --name指定容器的名字 最后的nginx 代码要运行的镜像名字 有tag的加上tag 如 nginx:xxx 默认为latest
    然后访问宿主主机地址+8800端口

    表明nginx已经成功运行

    pull到的镜像肯定有很多需要修改的地方,比如配置文件等或者要自己增加些什么玩意儿进去

    sudo docker exec -it 54d26bbce3d6 /bin/bash

    通过exec命令进入到容器内部进行操作, 其中红色部分可以是容器id或容器名字

    进入之后就和操作新的系统一样,操作完成之后输入exit退出

    某些时候需要获取镜像信息详情,比如安装了mysql后需要获取镜像内部的IP,端口等
    sudo docker inspect nginx_xiao

     这样会出来很多信息,可以通过grep检索需要的项目

    xiaochangwei@ubuntu:~/test$ sudo docker inspect nginx_xiao |grep IPAddress
                "SecondaryIPAddresses": null,
                "IPAddress": "172.17.0.2",
                        "IPAddress": "172.17.0.2",
    xiaochangwei@ubuntu:~/test$ 

    那么问题又来了, 进入容器内部并修改了东西后,怎么生成新的镜像供下次直接使用

    xiaochangwei@ubuntu:~/test$ sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0
    sha256:9f2c1a649a75fc72af4c2d6972290d9bc5f97c62ac52d6705b902fcdefeceea1
    xiaochangwei@ubuntu:~/test$ 
    xiaochangwei@ubuntu:~/test$ sudo docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    xiaochangwei/nginx   v1.0                9f2c1a649a75        11 seconds ago      108MB
    tomcat               latest              17eb1d58bf8c        4 hours ago         505MB
    nginx                latest              3f8a4339aadd        9 days ago          108MB
    ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
    xiaochangwei@ubuntu:~/test$ 
    sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0
      nginx_xiao 表示我们刚修改的容器名字或者id
    xiaochangwei/nginx:v1.0 为保存的镜像名字 :后面为tag

    刚刚commit的镜像仅仅是保存在本地的,如果要提交到网络上供其他人pull 使用呢? 如 https://cloud.docker.com/
    1.在https://cloud.docker.com/上注册一个账号
    2.提交本地镜像到https://cloud.docker.com/上去

    这样别人就可以通过docker pull xiaochangwei/nginx:v1.0 来获取并使用这个镜像了

    需要注意的是: sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0 镜像名里面包含了 我注册的账户名,这里需要一致,否则无法push

    到这里镜像怎么获取,查看,启动,编辑,保存,提交 容器查看 都知道了,但是怎么停止、启动、删除容器呢
    1.通过 sudo docker ps -a查看存在的容器信息
    2.通过 sudo docker start/stop/restart xxx 来启动、停止、重启指定的容器
    2.通过 sudo docker rm xxx 指定容器名或者容器id来删除,删除前请先停止容器,保证在非运行状态
    xiaochangwei@ubuntu:~/test$ sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    54d26bbce3d6        nginx               "nginx -g 'daemon ..."   43 minutes ago      Up 43 minutes       0.0.0.0:8800->80/tcp   nginx_xiao
    xiaochangwei@ubuntu:~/test$ sudo docker restart nginx_xiao
    nginx_xiao
    xiaochangwei@ubuntu:~/test$ sudo docker stop  nginx_xiao
    nginx_xiao
    xiaochangwei@ubuntu:~/test$ sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
    54d26bbce3d6        nginx               "nginx -g 'daemon ..."   44 minutes ago      Exited (0) 2 seconds ago                       nginx_xiao
    xiaochangwei@ubuntu:~/test$ sudo docker rm nginx_xiao
    nginx_xiao
    xiaochangwei@ubuntu:~/test$ sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    xiaochangwei@ubuntu:~/test$ 

       同样镜像的删除按如下操作

     1.通过sudo docker images 列出所有镜像

       2.通过sudo docker rmi xxx 来删除指定的镜像,镜像存在依赖关系,先删除最下层,最后删除顶层,建议根据镜像名字来删除

    xiaochangwei@ubuntu:~/test$ sudo docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    xiaochangwei/nginx   v1.0                9f2c1a649a75        23 minutes ago      108MB
    tomcat               latest              17eb1d58bf8c        4 hours ago         505MB
    nginx                latest              3f8a4339aadd        9 days ago          108MB
    ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
    xiaochangwei@ubuntu:~/test$ sudo docker rmi tomcat
    Untagged: tomcat:latest
    Deleted: sha256:17eb1d58bf8cf6809a26c9c47396a259d419d795070670d5a1bf0cbe63f9167c
    Deleted: sha256:ba92fe7a45fb76c9842f81a978a3671d3229077811e18c892ec18ddf7a8f372e
    Deleted: sha256:909e728190891a5bc59fd5f20cc741a9f8cf05531008de8bf6fcb86cbf9b92b3
    Deleted: sha256:757a35964f233352b539f21545c83f7443f666457075e177d5b88ae2afbc70ec
    Deleted: sha256:e9af3a1672101d2803af7a9af40b3442e6b2ac5236d27fb486ea34c2be773dcc
    Deleted: sha256:32e70354b98514f5c68cf18f01880e355826d7cd633eb7b303af25915e574556
    Deleted: sha256:01cd90dce70e314277a0d5550578d8db86efd7aa512fec4587f971a1e2474b1f
    Deleted: sha256:49909967c97ee31e2f3f69bbb150807e18b290eb3ab7f39ba0db3cc426278420
    Deleted: sha256:b0427413f858084dffd95e8b7c42968c12f8229925a0d4c15985722ccc3f90e9
    Deleted: sha256:1af387e1b89f088f694f89d1bd03c91a4f28e7704c4cc151994d0a3bfae42abe
    Deleted: sha256:e3c3b2640184c780efdcc2a02fa3e4fdb7f96dceccc1452527d1e9a1a879399b
    Deleted: sha256:6fb895d7f122630fbb471eb29f6d5ee2db66425e885f2c22462525daa7d263c2
    Deleted: sha256:e3a0c7535fa27c5bb3d91fa905d363bc6a572ea78aad4e5e17b47604c5d2289f
    Deleted: sha256:532ea8d384305c2f5fbcd946e0c7ce71d547550c1fa2f6726d37d26688c9e6f8
    Deleted: sha256:dfde2fab09732f8a2ae1a51362222e205fda934baccc8017b23867a2e4a1eb90
    xiaochangwei@ubuntu:~/test$ sudo docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    xiaochangwei/nginx   v1.0                9f2c1a649a75        24 minutes ago      108MB
    nginx                latest              3f8a4339aadd        9 days ago          108MB
    ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
    xiaochangwei@ubuntu:~/test$ 

    以上就是docker的基本使用命令了,下一篇将讲解通过dockerfile来构建镜像

  • 相关阅读:
    LaTeX不能识别eps文件?
    ubuntu 11.04系统清理(不断更新。。。)
    换Ubuntu邮件客户端Evolution为Thunderbird
    Byobu:打造多任务的Terminal
    Learning the Vi Editor, 6th Edition学习笔记(1)
    Ubuntu:让桌面显示回收站
    3rd Party Repository for Dropbox
    ubuntu 显示隐藏文件
    Ubuntu下的一款Dock工具AWN
    i686和x86_64的区别
  • 原文地址:https://www.cnblogs.com/xiaochangwei/p/8204511.html
Copyright © 2011-2022 走看看