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。

网络模式

  • 桥接,默认

Docker基本使用插图

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

springboot部署到docker

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

Docker基本使用插图1

2. Dockerfile文件编辑

Docker基本使用插图2

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

Docker基本使用插图3

3.  构建build

命令: docker build -t liaoday-gis . 

用docker images 查看:

Docker基本使用插图4

 

 

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 查看运行的容器:

Docker基本使用插图5

 

  5. 成功访问

Docker基本使用插图6

命令

##守护进程重启 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

原文链接:https://www.cnblogs.com/lioa/p/12610810.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享