zoukankan      html  css  js  c++  java
  • docker的命令分享

    docker是啥?

    Docker的思想来自于集装箱。

    在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了

    (容器容器讲得就是这条大鲸鱼)

    好像还是不够俗~

     

    可以让电脑开启更多台虚拟机的一种技术

     

     

    传统虚拟机

    容器化技术

    1、启动賊慢,应为要加载所有应用所需要的库,虚拟出一整套硬件,运行一个完整的操作系统

    2、占资源,一开始要分配内存、cpu给他 且可能只是分配它实际没用到

    3、步骤麻烦、各种虚拟机软件安装、镜像啊 到处找 。vm、Virtual box

    1、相互隔离,且共用宿主机内核,不需要虚拟一整套硬件

    2、库崩了也不会影响其他应用

    3、启动快了很多

    4、步骤简单了很多

    5、分享也较为方便、扩容、迁移也更加方便

     

    结婚3大件,docker也有三大件:

    Docker镜像(Images):用于创建Docker容器的模板 (钞票模版)

    Docker容器(Container):容器是独立运行的一个或一组应用 (印出来的一箱箱钞票)

    Docker仓库(repository):用来保存打包好的软件镜像 (放我一箱箱钞票的地方)

     

    为啥我要学docker?

    我写的小工具无法在小伙伴的电脑上啊~~ 让它给小伙伴跑太繁琐,自己头都大了~~~

    我想尝尝redis 敲下get 敲下set ~ 好吧~太难装了 放弃~

    咦~ 他会appium也 我也学一下~ 好吧~ 环境太难搞 放弃~

    突然想起蔡工说用docker啊~ 好吧~ 六个月后的我来抱抱佛脚~

    由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。

    docker个人学习路线

    1、Docker安装

    2、Docker命令

    3、Docker镜像

    4、容器数据卷

    5、仓库与镜像分享

    6、DockerFile

    7、Docker网络原理

     

    下面这些都是啥?

    7、IDEA整合Docker

    8、Docker Swarm

    9、CI/CD jenkins

    ........

     

    学得越多发现自己越无知的可笑~

     

    Docker安装

    俺是mac

    下载地址: https://download.docker.com/mac/stable/Docker.dmg (傻瓜式安装省略1w字~)

     

    配置镜像加速 (不要问为什么~ 你懂得!)

    我使用的是网易的镜像地址:http://hub-mirror.c.163.com

    验证是否安装成功命令

    $ docker --version
    Docker version 17.03.1-ce-rc1, build 3476dbf

     

    Docker命令

    命令手册: https://docs.docker.com/engine/reference/run/

     

    一、镜像相关命令

    查看本地主机上的所有镜像

    docker images 【-q】

     

    REPOSITORY 镜像仓库源 TAG 镜像标签 IMAGE ID 镜像id

    可选项 -q 只显示 镜像id

     

    搜索镜像

    docker search 加需要的镜像

     

    下载镜像

    docker pull 镜像名 【:tag】

    分层下载,其他镜像里有的就可以不用下载那一层

     

    删除镜像

    docker rmi -f 镜像id

    骚写法-递归删除所有镜像

    docker rmi -f $(docker images -q)

     

    二、容器相关命令

    启动容器

    docker run

    例子: docker run hello-world

    例子: docker run -it centos /bin/bash

    可选参数

    --name='给容器起名字'

    -d 后台运行

    -it 使用交互方式运行

    -p 指定端口 -p 8080:8081 (左边是主机端口/右边是容器端口)

     

    -P 随机指定端口

     

    run命令流程(第一次用有些好奇在简书搜了下run的流程)

     

     

     

    容器互通的实现方法

    查看当前docker网络

    docker network ls

    创建一个新的 Docker 网络。

    docker network create -d bridge test-net

    参数说明:

    -d:参数指定 Docker 网络类型,有 bridge、overlay。

    运行一个容器并连接到新建的 test-net 网络:

    docker run -itd --name test1 --network test-net ubuntu /bin/bash

    再运行一个容器并加入到 test-net 网络:

    docker run -itd --name test2 --network test-net ubuntu /bin/bash

    完成 ,相互ping了下均 ok

     

     

    退出容器

    exit (直接容器停止且退出)

    Ctrl+P+Q (退出容器,容器继续运行)

     

    查看运行中容器

    docker ps

    可选参数

    -a 查看曾经运行过的容器

    -q 只展示容器id

     

    删除容器

    docker rm 容器id

    骚写法-删除所有镜像

    docker rmi -f $(docker images -q)

    启动和停止容器

    docker start 容器id

    docker restart 容器id (重启容器)

    docker stop 停止当前运行中容器

    docker kill 容器id 强制停止当前容器 (stop报错了就用这个)

    查看容器日志

    docker logs -tf --tail 10 容器id

    案例:

    docker run -d centos /bin/sh -c "while true;do echo lucax;sleep 1;done"

    查看容器中进程信息

    docker top 容器id

     

    查看容器信息 (比如查挂载情况)

    docker inspect 容器id 

     

    修改容器内的挂载

    ~~

     

     

     

    进入容器

    docker exec -it 容器ID /bin/bash 

     

    三、其他

    显示docker版本信息

    docker version

    显示docker 系统信息(含镜像和容器数量)

    docker info

    帮助命令

    docker --help

     

    仓库

    DaoCloud 道客网络: https://hub.daocloud.io/

    https://hub.docker.com/

     

     

     

    打包个镜像给别人的方法

     

    打个压缩包的

    提交镜像更改生成新的镜像文件

    docker commit -a "author" -m "commit message" 容器id name:tag (注意name镜像名称要全部小写)

    docker镜像导出,tar镜像包可以拷贝到其他机器docker环境中加载

    docker save hello -o hello.tar

    docker镜像加载

    docker load -i hello.tar

    发现: (数据卷后的文件是无法保存在镜像的,要打包到另外一个目录)

     

     

    docker file

    https://www.linuxidc.com/Linux/2018-09/154111.htm

    1、编写一个dockerfile文件

    2、docker build 构建成一个镜像

    3、docker run 运行镜像

     

     

    Docker Hub

     

     

     

    实战:

     

    思路:

     

    Portainer容器可视化管理工具

     

    kubernetes

    k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等~

     

     

    总结:

    优点

    1、更高效的利用系统资源

    2、更快速的启动时间

    3、一致的运行环境

    5、更轻松的迁移

    6、部署方便

     

  • 相关阅读:
    【转载】mysql dual 虚拟表
    Mysql中DATE_SUB函数
    mybatis中<include>标签的作用
    IDEA提升幸福感的小技巧之"快速从controller跳转到serviceImpl"
    MySQL一些常用的时间函数 current_timestamp()
    SpringCloud配置中心搭建与使用(本地存储配置)
    Linux内存管理 (7)VMA操作【转】
    linux下的调试工具ltrace与strace【转】
    (十四)Linux内存管理之page fault处理【转】
    Linux系统调用详解(实现机制分析)--linux内核剖析(六)【转】
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/15150565.html
Copyright © 2011-2022 走看看