Docker三要素:

一.镜像(Image)

  Docker镜像(Image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建很多容器。UnionFS(联合文件系统),共享资源。

Docker

面向对象

镜像

类(class)

容器

实例对象

二.容器(Container)

  1.Docker利用容器(Container)独立运行一个或一组应用

  2.容器使用镜像创建的运行实例

  3.容器可以被启动、开始、停止、删除,每个容器之间都是相互隔离的,保证平台的安全。

  4.可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

  5.容器的定义和镜像几乎一摸一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

三.仓库(Repository)

  1.仓库(Repository)是集中存放镜像文件的场所。

  2.仓库(Repository)和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

  3.仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

  4.最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。

  5.国内的公开仓库包括阿里云、网易云等。

安装Docker(Centos7):

1.手动安装

step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息

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

Step 3: 更新并安装 Docker-CE

sudo yum makecache fast sudo yum -y install docker-ce

Step 4: 开启Docker服务

sudo service docker start

2.使用官方安装脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

配置阿里云镜像:

进入阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

1.创建文件夹

sudo mkdir -p /etc/docker

2.创建输入并保存daemon.json配置

sudo tee /etc/docker/daemon.json <<-'EOF'

3.输入内容:

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] } EOF

4.保存并退出编辑:

EOF

5.重载daemon.json

sudo systemctl daemon-reload

6.重启docker

sudo systemctl daemon-reload && sudo systemctl restart docker

使用命令查看配置信息项中registry-mirrors信息,查看镜像配置是否生效:

docker info

常用命令:

  • 查看docker版本

docker version

  • 查看docker详细信息

docker info

  • 查看docker帮助命令

docker --help

像命令:

  • 列出本机镜像列表: docker images

  • 查询DockerHub上的镜像: docker search tomcat / docker search -s 30 tomcat (查询点赞数30以上的镜像)

  • 下载镜像 : docker pull tomcat:[版本号] (如果不填版本号,默认拉最新版 )

  • 删除镜像 : docker rmi [-f] tomcat:[版本号] (-f:强制删除,否则不能删除正在使用的镜像 , 若不填版本号,默认删除最新版)

容器命令:

  • 新建并启动容器

 docker run [Options] Image [command] [args...]  

	--name "容器新名字":为容器指定一个新名称

	-d:后台运行容器,并返回容器ID(即:启动守护式容器)

	-i:以交互模式运行容器,通常与-t同时使用

	-t:为容器重新分配一个伪输入终端,通常与-i同时使用

	-P:随机端口映射

	-p:指定端口映射,有以下四种格式

		ip : hostPort : containerPort

		ip :: containerPort

		hostPort : contarnerPort

		containerPort

	-m,--memory:内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M

	--memory-swap:内存+交换分区大小总限制。格式同上。必须必-m设置的大

	--memory-reservation:内存的软性限制。格式同上

	--oom-kill-disable:是否阻止 OOM killer 杀死容器,默认没设置

	--oom-score-adj:容器被 OOM killer 杀死的优先级, 范围是[-1000, 1000],默认为 0

	--memory-swappiness:用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数

	--kernel-memory:核心内存限制。格式同上,最小为 4M
  • 列出docker上所有正在运行的容器

docker ps [Options]  

	-a:列出所有当前运行的+历史上运行过的容器

	-l:显示最近创建的容器  

	-n:显示最近N个创建的容器 [docker ps -n 3] 

	-q:静默模式,只显示容器编号  # --no-trucn:不截断输出 
  • 查看容器运行状态(内存占占用情况) : docker status

  • 关闭并退出容器 : exit

  • 不关闭退出容器 : 按键 :Ctrl+P+Q

  • 启动容器 : docker start [容器ID]/[容器名]

  • 重启容器 : docker restart [容器ID]/[容器名]

数据卷命令:

  • 以命令方式建立数据卷 : docker run -it -v /[宿主机绝对路径目录:/容器内目录] [镜像名]

例:docker run -it -v /usr/silen/data : /user/silen/containerData [镜像名]

  • 以命令方式建立数据卷[带权限] : docker run -it -v /[宿主机绝对路径目录:/容器内目录]:[权限] [镜像名]

  • docker以数据卷方式创建镜像

将app-0.0.1-SNAPSHOT.jar与dockerfile放于同一目录:

dockerfile内容如下:

#使用JDK8 基础镜像
FROM java:8 
#作者 
MAINTAINER  Silen <1107837746@qq.com> 
#数据卷 
VOLUME 	/user/app/data 
#将jar包添加到容器中并更名为app.jar 
ADD app-0.0.1-SNAPSHOT.jar app.jar 
# 运行jar包 
CMD java -jar app.jar 

然后创建镜像(在dockerfile所在目录,注意末尾小数点):

docker build -t silen/app .

运行该镜像(注意端口映射)

docker安装mysql后设置账号密码:

docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql:5.7

文章作者: 桃花三月夭
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 桃花三月夭
后端技术 运维技术 Docker 运维
喜欢就支持一下吧