`

Docker 使用初步

阅读更多
概述:
(1)架构
 
        docker server:服务进程,管理所有容器,接受客户端操作。
 
        docker client:远程控制器,远程控制服务器行为
        通常二者在同一个机器上
 
(2)名词
        
        镜像:容器运行的只读模板,由层构成,经过提交相应的层更新生成不同的容器
                  一般镜像构建过程:基础镜像——》中间件镜像 ——》应用镜像
        容器:由镜像创建的程序运行环境,每次操作生成不同的层
 
         layer 层: docker 每执行一条命令,就会生成一层,可以基于层提交生成具有不同操作的镜像。
 
        仓库:存放镜像的地方。有本地仓库,远程仓库,共有仓库,私有仓库。
 
一 镜像
(1)搜索镜像
          命令:docker search centos
$ docker search centos
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                          The official build of CentOS.                   2877      [OK]
ansible/centos7-ansible         Ansible on Centos7                              90                   [OK]
jdeathe/centos-ssh              CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8...   47                   [OK]
jdeathe/centos-ssh-apache-php   CentOS-6 6.8 x86_64 - Apache / PHP / PHP M...   23                   [OK]
nimmis/java-centos              This is docker images of CentOS 7 with dif...   18                   [OK]
gluster/gluster-centos          Official GlusterFS Image [ CentOS-7 +  Glu...   14                   [OK]
million12/centos-supervisor     Base CentOS-7 with supervisord launcher, h...   12                   [OK]
 
(2)获取镜像
        命令:docker pull centos
 
(3)查看镜像
        命令: docker images
 
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              java                a10d7da10519        45 hours ago        1.447 GB
centos              latest              0584b3d2cf6d        3 weeks ago         196.5 MB
 
(4)删除镜像
 
        命令:docker rmi <REPOSITORY>:<TAG>
 
$ docker rmi centos:datauser
Untagged: centos:datauser
Deleted: sha256:febb9fe5ad20d8ea9c5680807b82c234b0bf8c3c91ca1ac04e33a3d920f6be42
Deleted: sha256:09f1f145834352976cf5433bb549886a05eb6f3b83536bca562af8e6c8fb5ac6
 
 
二 容器
(1)由镜像创建容器并启动
 
        命令:docker run -tid —name <CONTAINER NAME>  <REPOSITORY>:<TAG>
        例如:docker run -tid —name java centos:latest
        说明:
                   -t:docker 分配一个维终端并绑定到容器标准输入之上
                   -i: 让容器的标准输入保持打开,接收操作
                  -d:守护进程的方式连接
 
 
        其他:由镜像启动一个容器并运行程序
  
      docker run centos echo "hello world"
      hello world
 
(2)连接容器
        命令: docker exec -ti <容器id或名称> /bin/bash
 
(3)查看容器
          a)查看运行的容器
 
         命令: docker ps
 
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
4712b78f0e5a        centos:latest       "/bin/bash"         8 hours ago         Up 8 hours                              dataUser
          
        b)查看所有容器
 
        命令:docker ps -a
 
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
4712b78f0e5a        centos:latest       "/bin/bash"         8 hours ago         Up 8 hours                                     dataUser
789ab62382eb        centos:latest       "/bin/bash"         8 hours ago         Exited (127) 8 hours ago                       test
5387312fc962        centos:latest       "/bin/bash"         8 hours ago         Exited (137) 8 hours ago                       dataVol
 
(4)启动一个已存在的容器
            命令:docker start <容器id | 容器名称>
 
(5)停止容器
            命令:docker stop <容器id | 容器名称>
 
(6)删除容器
             命令:docker rm <容器id | 容器名称>
 
(7)提交容器到镜像
         命令:docker commit <容器ID | 容器名称>  <仓库名称>:<Tag>
$ docker commit dataUser centos:datauser
sha256:febb9fe5ad20d8ea9c5680807b82c234b0bf8c3c91ca1ac04e33a3d920f6be42
 
三 端口映射
 
启动时映射宿主机和容器端口
命令:docker run -p <宿主机端口>:<容器端口>  <镜像名称>
 
-p 指定的集中形式
 
(1)ip:hostPort:containerPort :指定宿主机ip指定端口映射容器的端口
(2)ip::containerPort:指定宿主机ip,系统随机分配端口,映射到容器端口
(3)hostPort:containerPort:宿主机任意ip,指定端口,映射到容器端口
(4)containerPort:系统随机分配端口,映射到容器端口
 
检测命令:
 
     docker port $container_id | $container_name
 
注:
     1)容器要增加端口,需要提交成镜像,然后重新绑定端口,原先绑定的端口在启动镜像时需要重新绑定
     2)查看端口要使用 docker port , docker ps 显示的不靠谱
 
开四个端口映射样例
 
$ docker run -itd -p 9200:9200 -p 9201:9201 -p 9300:9300 -p 9301:9301 --name search centos:java
e54a6dfc3a8d430fa8b7c2a7bdd65949423cb4da5c7a6013b6871b9e490ac039
 
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                NAMES
e54a6dfc3a8d        centos:java         "/bin/bash"         4 seconds ago       Up 3 seconds        0.0.0.0:9200-9201->9200-9201/tcp, 0.0.0.0:9300-9301->9300-9301/tcp   search
 
$ docker port search
9200/tcp -> 0.0.0.0:9200
9201/tcp -> 0.0.0.0:9201
9300/tcp -> 0.0.0.0:9300
9301/tcp -> 0.0.0.0:9301
 
四 拷贝数据
 
  命令:   docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
   docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
 
     1)向容器内拷贝:docker  cp  [本地路径] [容器名]:[容器路径]
               例如:docker cp  /tmp/test.txt  d8f7c83ba660:/tmp
               
     2)从容器内拷出:docker  cp  [容器名]:[容器路径] [本地路径]   
               例如:docker cp  d8f7c83ba660:/tmp/test.txt  /tmp
 
五 加载数据卷
 
(1)挂载目录
          启动镜像时,将宿主机指定目录挂载到指定镜像的指定目录上
 
          docker run -tid -v /tmp:/tmp —name data centos:latest
 
          说明:通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径,此时默认开放读写权限。
 
          需要指定权限如下:
 
          docker run -tid -v /tmp:/tmp:ro —name data centos:latest
 
          如果需要挂载多个目录,调用多次 -v进行挂载
 
(2)挂在数据卷
           数据卷:普通 docker容器,用于供其他容器挂在使用。
           
            a)创建数据卷:同上
                   docker run -tid -v /tmp:/tmp --name dataVol centos:latest
 
            b)挂载数据卷:
                   docker run -tid --volumes-from dataVol --name dataUser centos:latest 
 
附录:其他
 
(1) Docker 容器Root密码
          yum install passwd 安装passwd软件;
          执行passwd命令,修改root用户密
    
分享到:
评论

相关推荐

    Docker命令

    Docker 初步命令

    Docker部署文档初步

    初步学习

    实训1.安装docker.docx

    初步了解学习Docker

    云平台docker

    VirtualBox、centos中初步安装使用docker建立仓库等实验报告

    Docker安全:从入门到实战

    主要简述Docker容器的安全知识分享,并讲解了一些安全规则,以及怎么构建Docker的防御体系,对应初步学习Docker的同学有很大的帮助,尤其是关注Docker的安全入门用户有一定的技能提升。

    Docker+K8S 集群环境搭建及分布式应用部署

    Docker+K8S 集群环境搭建及分布式应用部署,一个简单的教程,对docker+k8s有个初步的了解

    Docker学习.pdf

    主要讲了如何使用Docker,Docker的一些基本知识 如何编写Dockerfile等等, 主要适合初步学习Docker的人群,

    初步了解docker

    大致介绍了docker的原理及使用,从整体到细节,帮忙同学们了解。

    hadoop on docker

    本人不了解go语言,对docker 也只是初步的学习了基本使用,因为想学习点hadoop东西,用实验室电脑配置太低,用虚拟机搭建hadoop集群太卡,所以用docker 尝试搭建一个3个节点的最简单的集群:1个namenode(192.168.0.2...

    Docker入门之创建镜像初步.pdf

    本文介绍在CentOS7上从构建一个最简单无依赖的镜像开始,逐步揭示Docker镜像的构建和Dockerfile的应用。 什么是镜像?可理解镜像(image)为一个可执行程序文件,而容器(container)则是进程(运行态),...

    Docker结合.Net Core的初步使用教程

    官方为我们提供了针对不同系统的Docker版本,今天我们基于windows系统简单介绍下如何使用。 Windows部署Docker 目前官方发布的Docker桌面版,仅支持Windows 10 64-bit: Pro, Enterprise(企业版), Education(教育版

    Docker-LNMP::fire:MacLinux Docker LNMP

    初步,安装依赖工具 git // brew安装git Docker [ ] Docker-compose [ ] 第二步,获取项目代码 $ git clone https://github.com/helingfeng/Docker-LNMP.git 第三步,运行容器编排 $ cd Docker-LNMP // 进入项目根...

    gpu-rest-engine, 使用 Docker 和的Caffe的REST API.zip

    gpu-rest-engine, 使用 Docker 和的Caffe的REST API 简介这个库展示了如何使用 NVIDIA gpu实现低延迟图像分类( 推理)的REST服务器。 这是对 GRE软件的初步演示,可以让你构建自己的加速 microservices 。演示使用了...

    docker-phantomjs2:PhantomJS 2.0的最低可行Docker映像

    初步测试表明,PhantomJS项目本身提供的一些运行良好,但这并不意味着它将适用于所有用例。 :warning: 用法 docker run -ti --rm fgrehm/phantomjs2 --help 在本地构建 git clone ...

    Docker数据存储之tmpfs mounts详解

    阅读本文前,希望你已经对...如果你使用linux运行Docker,那么避免写入数据到容器存储层还有一个方案:tmpfs mounts。 tmpfs mounts,顾名思义,是一种非持久化的数据存储。它仅仅将数据保存在宿主机的内存中,一旦

    frappe_docker

    克隆存储库和初步步骤将此存储库克隆到系统中的某个位置: git clone https://github.com/frappe/frappe_docker.gitcd frappe_docker生产设置它会注意以下事项: 设置所需的Frappe / ERPNext版本。 设置所有系统要求...

    初步了解Docker

    文章目录1、docker简介(1)docker是什么(2)docker的工作模式2、docker容器与虚拟机有什么区别(1)在虚拟机中运行应用(2)在docker容器中运行应用(3)二者擅长的使用场景3、安装docker(1)安装docker包(2)...

    IT技术进阶:初步认识docker.pdf

    。。。

    IT技术进阶:初步认识docker.docx

    。。。

    浅谈关于Docker容器互联的初步实践

    主要介绍了浅谈关于Docker容器互联的初步实践,本文介绍了使用网桥(bridge)来对容器进行互联,非常具有实用价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics