Docker基本使用

历史

  • 2010 年几个人基于PAAS平台创建的dotCloud。随着云的应用,大公司比如谷歌、微软都涉足。所以dotCloud生死攸关。既无盈利又可惜自己的汗水付诸东流,所以他们选择了开源。开源后就开始了逆袭之路。
  • 2014年6月,第一个版本Docker1.0诞生。
  • 目前社区版1.29。

概念

  • 最开始docker官网(https://www.docker.com/), 最醒目的三个单词即是:build、ship、run
  • docker含义: docker衍生于虚拟机,所以,不管是虚拟机还是容器,其实都是对计算机资源隔离的不同实现罢了。包括对文件系统隔离、对网络隔离。docker基于Ubuntu开发,本身技术不是什么新东西,但它制定的隔离使用标准,成功将服务与系统,服务与硬件进行隔离。
  • docker架构:docker client + docker daemon  + docker repository, 客户端做构建镜像,拉取镜像的指令发出, 宿主机的进程运行容器,仓库和maven仓库的概念类似,主要存放已经构建OK的镜像。
  • 镜像:镜像这个词也不是新鲜东西,我们最早接触这个词应该是安装操作系统的时候,系统盘里的.iso文件就是一个系统镜像。镜像其实就是打包好的一个可以运行的程序,和我们windows里面的zip文件类似。要用哪个镜像,直接就从docker的官方仓库(https://hub.docker.com/)去拉取即可。
  • 仓库:存放镜像。国内也有很多仓库,阿里的、网易的。
  • 容器:运行的镜像即是一个容器。这里联想上面的三个词:build即是构建镜像。ship即是运输镜像。run即是运行镜像成容器。
  • 宿主机:即运行docker的主机。
  • 隔离:类似虚拟机,docker里面有自己的文件系统,也有隔离的网络,所以宿主机的网络端口0~65535 和docker里面的0~65535是可以独立存在的。

原理

  docker本质是运行的进程,和宿主机共享linux内核。那如何做到真正的隔离呢?其实是通过linux的namespace技术,对网络、磁盘、内存的做到细粒度隔离。实际上docker是一个运行在宿主机的进程,和宿主机本身的进程处于平级关系,也都是相互竞争cpu、内存等资源。譬如宿主机PID为333的进程为docker实例,而docker通过namespace技术把docker实例和宿主机分隔开。 但docker又是通过什么做到每个docker实例之间的资源竞争不受影响呢?这就是google公司开源出来的cgroup技术。cgroup作用一句话即是:限制进程对系统资源的使用,不管是空间还是时间上的。

基本使用

  配置源

  用阿里云的吧,快。在/etc/yum.repos.d/目录下,创建docker.repo的文件:

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

  更新一下源: 

yum -y update

安装

  docker的linux安装非常简单,一条命令即可。但内核要求3.10以上。

  查看可用包列表:

yum list docker-ce --showduplicates | sort -r

  安装:

sudo yum install docker-ce-18.03.1.ce-1.el7.centos

 

  • 加入开机启动

    systemctl start docker

    systemctl enable docker

  • 查看镜像

    docker images [options] [REPOSITORY[:TAG]]

  • 拉取镜像

    docker pull [options] NAME[:TAG]

  • 运行镜像

    docker run [options] IMAGE[:TAG] [COMMAND] [ARG..]

  命令这玩意儿死记硬背没用,多用就知道了。一定记住多用--help, 例  docker run --help。

网络模式

  • 桥接,默认

  • host模式,和宿主机公用。
  • none模式。
  • container模式。
  • 自定义模式。

springboot部署到docker

  1. 在本地的虚拟机创建一个构建的目录,并把jar包传上来。

    

  2. Dockerfile文件编辑

    

   Dockerfile的元素解释,盗图一张,请阅;

    

  3.  构建build

    命令: docker build -t liaoday-gis . 

    用docker images 查看:

    

 

 

  4. 运行

    命令: docker run -d -p 8888:8888 d0ebf323acfb

    用docker run --help ,这里描述:

    -d, --detach                         Run container in background and print container ID,即-d后台运行。

    -p, --publish list                   Publish a container's port(s) to the host ,即后面容器的端口,映射前面宿主机的端口。

    -P, --publish-all                    Publish all exposed ports to random ports, 即大P暴露容器的随机端口给宿主机。

    用docker ps 查看运行的容器:

    

 

   5. 成功访问

  

命令 

##守护进程重启
sudo systemctl daemon-reload
##重启docker服务
sudo systemctl restart docker
## 关闭docker
sudo systemctl stop docker
## 重启docker服务
sudo service docker restart
## 关闭docker
sudo service docker stop

 参考

  https://www.cnblogs.com/kaye/p/10508800.html

目录

  https://www.cnblogs.com/lioa/p/12664686.html

posted @ 2020-04-01 15:51  正宗老菜鸟  阅读(746)  评论(1编辑  收藏  举报