• Docker的常用命令总结


    一、普通指令

    启动 Docker

    sudo systemctl start docker

    停止 Docker

    sudo systemctl stop docker

    普通重启 Docker

    sudo systemctl restart docker

    修改配置后重启 Docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker

    查看版本

    docker version

    查看Docker 信息

    docker info

    Docker 帮助

    docker --help

    二、镜像命令

    列出本机Docker上已经安装的镜像:

    docker images

    搜索Docker hub上面的镜像

    # 普通搜索,以Tomcat为例
    docker search tomcat
    # 搜索star大于50的镜像实例
    docker search -s 50 tomcat

    从Docker Hub上面下载镜像

    # 以下载tomcat为例
    docker pull tomcat[:version]

    删除本地的某一个镜像

    复制代码
    # 以删除tomcat为例
    docker rmi tomcat[:version]
    # 通过镜像ID删除
    docker rmi -f 镜像ID
    # 通过镜像ID删除多个
    docker rmi -f 镜像名1:TAG 镜像名2:TAG 
    # 删除全部
    # docker images -qa : 获取所有镜像ID
    docker rmi -f $(docker images -qa)
    复制代码

    镜像打包与运行

    复制代码
    #打包一个我们自己的 tomcat
    docker commit -a jianghai -m="package my tomcat" 要打包的镜像ID jianghai/tomcat:1.0
    # -a : 作者名称
    # -m : 打包信息
    
    #启动我们自己打包生成的 tomcat
    docker run -it -p 7700:8080 jianghai/tomcat:1.0
    复制代码

    三、容器命令

    启动容器

    复制代码
    # 新建并进入容器,最后一个为本地容器的ID  
    docker run -it --name="rivercentos001" 9f38484d220f
    
     # 为容器启一个名称
     -name="新容器名称"
     # 后台运行容器,并返回容器ID,也就是启动守护士容器
     -d 
     # 以交互模式运行容器,通常与-t同时使用.
     -i
     # 为容器重新分配一个伪终端,通过与-i同时使用
     -t 
     # 随机端口映射 [大写P]
     -P
     # 端口映射 [小写P]
     -p
    # 数据卷 加参数 ro:容器内的目录只读,不可写
    -v /宿主机绝对路径目录:/容器内目录[:ro] 镜像名
    复制代码

    查看当前正在运行的Docker 容器

    复制代码
    docker ps
    # 参数
    # 列出当前正在运行的以及历史上运行过的
    -a
    # 显示最近创建的容器
    -l
    # 显示最近创建的N个容器
    -n
    # 静默模式,只显示容器编号
    -q
    # 不截断输出
    --no-trunc
    复制代码

    退出容器

    # 退出并停止
    exit
    # 容器不停止退出
    ctrl+P+Q

    启动容器

    docker start 容器ID或容器name

    重启容器

    docker restart 容器ID或容器name

    停止

    docker stop 容器ID或容器name

    强制停止

    docker kill 容器ID或容器name

    删除容器

    复制代码
    # 删除已经停止的容器
    docker rm 容器ID或容器name 
    # 强制删除已经停止或正在运行的容器
    docker rm -f  容器ID或容器name 
    
    一次性删除所有正在运行的容器
    docker rm -f $(docker ps -qa)
    复制代码

    重新进入容器

    # 第一种方式
    docker attach 容器ID或容器名称
    # 第二种方式{隔山打牛式,在宿主机向容器发送命令并获取结果}
    docker exec -t 容器ID或容器名称 ls# 列出文件列表
    # 交互
    docker exec -it rivertomcat  /bin/bash

    从容器内拷贝文件到宿主机

    docker cp 容器ID或容器名称:/文件路径与文件名 宿主机地址
     # 例,拷贝容器river的aaa文件夹下的a.txt到宿主机的当前位置 
     docker cp river:/aaa/a.txt .

     四、日志命令

    复制代码
    docker logs -f -t --tail 10 容器ID或容器名称
    # 加入的时间戳
    -t
    # 跟随最新的日志打印
    -f
    # 输出最后几行的日志
    --tail 行数
    
    # 启动一个centos,并且每两秒在Console输出一个Hello jianghai
    docker run -d --name river centos /bin/sh -c "while true;do echo hello jianghai;sleep 2;done"
    # 查看最后10行的日志
    docker logs -f -t --tail 10 river
    
    #查看容器内的进程 docker top 容器ID或容器名称
    复制代码

    五、DockerFile解析

    FROM 基础镜像,当前新镜像是基于哪个镜像的。

    MAINTAINER 镜像维护者的姓名和邮箱地址。

    RUN 容器构建时需要运行的命令。

    EXPOSE 当前容器对外暴露出的端口。

    WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,也不是运行并登录进来的当前目录位置。

    ENV 用来构建镜像过程中设置环境变量。

    ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。

    COPY 类似ADD,但只是复制,不带解压压缩包的功能。

    VOLUME 容器数据卷,用于数据保存和持久化工作。

    CMD 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD指令,但只有最后一个会生效执行。

    ENTRYPOINT 

    指定一个容器启动时要运行的命令

    ENTRYPOINT的作用和CMD一样,都是在指定容器启动程序及参数

    相当于CMD的升级版本,CMD只能执行一条命令,运行时如果加一些参数是不行的.但如果把CMD替换成ENTRYPOINT就可以在Run镜像的时候在尾部追回指令.

    简单的说如果Run镜像的时候追回了命令,CMD会用追回的覆盖掉旧的,ENTRYPOINT会追回执行。

    ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。

    一、什么是Docker


    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

    二、Docker与虚拟机比较
    作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

    Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
    Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
    Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
    Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。


    三、Docker 的架构
    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

    Docker 容器通过 Docker 镜像来创建。

    容器与镜像的关系类似于面向对象编程中的对象与类。

    Docker 面向对象
    容器 对象
    镜像 类


    Docker 镜像(Images)

    Docker 镜像是用于创建 Docker 容器的模板。

    Docker 容器(Container)

    容器是独立运行的一个或一组应用。

    Docker 客户端(Client)

    Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

    Docker 主机(Host)

    一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

    Docker 仓库(Registry)

    Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

    Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

    Docker Machine

    Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    四、在Linux系统中安装Docker
    1、Ubuntu Docker 安装

    Docker 支持以下的 Ubuntu 版本:

    Ubuntu Precise 12.04 (LTS)
    Ubuntu Trusty 14.04 (LTS)
    Ubuntu Wily 15.10
    其他更新的版本……
     

    前提条件
    Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。

    通过 uname -r 命令查看你当前的内核版本

    runoob@runoob:~$ uname -r


    使用脚本安装 Docker
    1、获取最新版本的 Docker 安装包
    runoob@runoob:~$ wget -qO- https://get.docker.com/ | sh


    输入当前用户的密码后,就会下载脚本并且安装Docker及依赖包。

    安装完成后有个提示:

        If you would like to use Docker as a non-root user, you should now consider
        adding your user to the "docker" group with something like:
        sudo usermod -aG docker runoob
    Remember that you will have to log out and back in for this to take effect!

    当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker runoob 命令,然后重新登陆,否则会有如下报错

    2、启动docker 后台服务
    runoob@runoob:~$ sudo service docker start


    3、测试运行hello-world

    runoob@runoob:~$ docker run hello-world
    镜像加速
    鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%dockerconfigdaemon.json(Windows) 来配置 Daemon。

    请在该配置文件中加入(没有该文件的话,请先建一个):

    {
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    2、CentOS Docker 安装

    Docker支持以下的CentOS版本:

    CentOS 7 (64-bit)
    CentOS 6.5 (64-bit) 或更高的版本
    前提条件
    目前,CentOS 仅发行版本中的内核支持 Docker。

    Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

    Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

    使用 yum 安装(CentOS 7下)
    Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

    通过 uname -r 命令查看你当前的内核版本

    [root@runoob ~]# uname -r 3.10.0-327.el7.x86_64


    安装 Docker
    从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。

    Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

    本文介绍 Docker CE 的安装使用。

    移除旧的版本:

    $ sudo yum remove docker
    docker-client
    docker-client-latest
    docker-common
    docker-latest
    docker-latest-logrotate
    docker-logrotate
    docker-selinux
    docker-engine-selinux
    docker-engine
    安装一些必要的系统工具:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    添加软件源信息:

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    更新 yum 缓存:

    sudo yum makecache fast
    安装 Docker-ce:

    sudo yum -y install docker-ce
    启动 Docker 后台服务

    sudo systemctl start docker
    测试运行 hello-world

    [root@runoob ~]# docker run hello-world


    由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

    使用脚本安装 Docker
    1、使用 sudo 或 root 权限登录 Centos。

    2、确保 yum 包更新到最新。

    $ sudo yum update
    3、执行 Docker 安装脚本。

    $ curl -fsSL https://get.docker.com -o get-docker.sh
    $ sudo sh get-docker.sh
    执行这个脚本会添加 docker.repo 源并安装 Docker。

    4、启动 Docker 进程。

    sudo systemctl start docker
    5、验证 docker 是否安装成功并在容器中执行一个测试的镜像。

    $ sudo docker run hello-world
    docker ps
    到此,Docker 在 CentOS 系统的安装完成。

    镜像加速
    鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%dockerconfigdaemon.json(Windows) 来配置 Daemon。

    请在该配置文件中加入(没有该文件的话,请先建一个)

    五、Docker常用命令
    1、镜像操作

    1、搜索镜像

    可使用docker search 命令搜索存放在Docker Hub中的镜像

    docker search java
    2、下载镜像

    docker pull java
    3、列出镜像

    docker images
    4、删除本地镜像

    docker rm java
    2、容器操作

    1、新建并启动容器

    docker run
    它有很多选项,可使用docker run –help 查看选项

    常用的选项有:

    -d选项:表示后台运行
    -P选项:随机端口映射
    -p选项:指定端口映射,有以下四种格式。
    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort
    示例:

    docker run -d -p 91:80 nginx
    -d #后台运行
    -p 宿主机端口:容器端口 #开放容器端口到宿主机端口
    访问http://Docker 宿主机 IP:91/,将会看到nginx的欢迎页面。

    2、列出容器

    docker ps
    3、停止容器

    docker stop 容器ID/容器名称
    4、强制停止容器

    docker kill 容器ID/容器名称
    5、启动已停止的容器

    docker start 容器ID/容器名称
    6、进入容器
    某场景下,可能需要进入运行中的容器。

    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    一般进入容器的方式为:

    docker exec -it 0f2f3885c9a0 /bin/bash

    7、删除容器

    使用docker rm命令即可删除指定容器。

    docker rm 容器ID/容器名称
    8、创建容器

    有时候我们需要创建一个容器,但并不马上启动它,后面需要时,以start启动

    docker create -it nginx
    暂停容器

    9、暂停一个容器,方便 commit

    docker pause CONTAINER
    查看容器或者镜像的详细信息

    10、查看容器或者镜像的详细信息

    docker inspect
    六、补充命令:
    1、docker ps:查看当前运行的容器
    2、docker ps -a:查看全部 容器
    3、docker images:查看所有拉取到的镜像
    4、docker pull 镜像名:版本号 :拉取docker hub中的镜像,如果不指定镜像名则为最新版本的镜像
    5、docker rm 容器名:移除镜像
    6、docker search 镜像名:搜索镜像
    7、docker rmi 镜像名:删除镜像
    8、docker run 镜像名:版本号 :启动镜像作为容器,可以带有以下参数

    9、docker rename 旧镜像名 新镜像名:镜像命名

    -p 主机端口:容器端口 ,将主机端口映射到容器的端口
    -P 随机端口映射
    -d 后台运行
    --name 指定容器名
    -e 指定运行参数
    10、docker exec -it 容器名 /bin/bash :进入容器内部
    11、docker inspect 容器名:查看容器详细情况,包括主机内ip地址

    12、docker-compose up -d 运行docker-compose文件,启动编排好的服务

    七、使用Docker创建Redis容器
    1、拉取Redis镜像

    docker pull redis:3.2

    2、后台启动Redis

    docker run -p 6378:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes
    八、参考资料
    1、官网:https://www.docker.com/
    2、Docker入门教程 http://dockone.io/article/111
    3、Docker_百度百科 http://baike.baidu.com/view/11854949.htm
    4、史上最全Docker资料集粹 http://special.csdncms.csdn.net/BeDocker/
    5、Docker - 话题精华 - 知乎 http://www.zhihu.com/topic/19950993/top-answers
    6、docker 简明教程 | 简果网 http://www.simapple.com/docker-tutorial
    7、如何使用Dockerfile构建镜像 http://blog.csdn.net/qinyushuang/article/details/43342553
    8、Dockerfile reference - Docker https://docs.docker.com/engine/reference/builder/
    9、菜鸟教程-Docker教学 http://www.runoob.com/docker/docker-tutorial.html
    10、 灰寨小学–python小陈的博客 https://blog.csdn.net/xiaochendefendoushi/article/details/80979905

    原文链接:https://blog.csdn.net/pbrlovejava/article/details/80357744

  • 相关阅读:
    spring cloud 学习
    python学习-2 python安装和环境变量的设置
    python学习-1 编程语言的介绍
    LIUNX随堂学习-3 权限
    LIUNX随堂学习-2 用户和组,增、删、改、查
    LIUNX随堂学习-1 用户及查看信息
    MySQL--Oracle导出数据csv
    MySQL--mysql中You can’t specify target table for update in FROM clause错误解决方法
    Python--安装
    MySQL--复制
  • 原文地址:https://www.cnblogs.com/zgq123456/p/14856856.html
Copyright © 2020-2023  润新知