阅读 466

docker入门(镜像和容器的使用)

技术活,该赏
点赞再看,养成习惯
复制代码

docker使用教程相关系列 目录


一、什么是docker 镜像

docker 镜像介绍

操作系统分为内核和用户空间,对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。
Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

docker 镜像默认存储在:/var/lib/docker/目录下

镜像与容器的关系

镜像(image)和容器(container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立宿主的系统下操作一样。这种特性使容器封装的应用比直接在宿主运行更加安全。
前面讲过镜像使用的是分层储存,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,可以称这个味容器运行时读写而准备的存储层为容器存储层。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
按照Docker最佳实践的要求,容器不应该向其存储层写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(volume)、或者绑定宿主目录,在这些位置的读写会跳过存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。


二、列出docker 镜像

先启动docker

systemctl restart docker.service
复制代码

列出docker 镜像

docker images
复制代码

 

三、拉取镜像

从docker hub拉取

从Docker Hub中拉取镜像时,常会出现以下问题:

0ad1d6225e75a44f6ff3638032d6509aff6.png

解决方案:

docker 从 docker hub 拉取镜像,因为是从国外获取,速度较慢。可以通过配置国内镜像源的方式,从国内获取镜像,提高拉取速度。

ustc镜像源(推荐)

配置

cd /etc/docker
复制代码

https://note.youdao.com/yws/public/resource/c378f17da771056bd3b5d4de78656ee3/xmlnote/717AD8183D7A4F568BA29C944CEA3C42/63262

vi daemon.json
复制保存
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
复制代码

重启docker服务

systemctl restart docker.service
复制代码

拉取centos镜像

docker pull centos
复制代码

拉取成功后,查看

docker images
复制代码

第三方镜像如何使用说明

hub.docker.com/search?type…

文档里有详细说明如何使用

四、查找镜像

docker search tomcat
复制代码

 NAME:镜像名

DESCRIPTION:镜像描述

STARS:用户评价,数值越高越受欢迎

OFFICIAL:是否官方

AUTOMATED:自动构建,表示该镜像由docker hub自动构建流程创建的;

五、构建镜像 

安装 tomcat

1、先安装centos

列出docker 镜像

docker images
复制代码

已经有了,就不需要再安装,如果没有,则安装centos

docker pull centos
复制代码

 2、创建交互式容器

docker run -i -t --name=mycentos centos
复制代码

注:

这两个参数(-i, -t)是啥意思

OptionsMean
-i以交互模式运行容器,通常与 -t 同时使用;
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用;

 进入容器里面

安装JDK

yum install java-1.8.0-openjdk* -y
复制代码

安装成功

0

设置环境变量

centos8 通过yum安装Java后,查看Java安装路径

ls -lrt /usr/bin/java 
ls -lrt /etc/alternatives/java
复制代码

0

0

vi /etc/profile
复制代码

0

在文件最下方粘贴以下内容后保存

注意:JAVA_HOME后面,是你实际的安装路径!

export JAVA_HOME=/usr/local/jdk-xxxx
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
复制代码

0

生效命令:source /etc/profile 
测试命令:java -version
复制代码

0

把tomcat复制到服务器上

可以通过SCP上传到服务器上

0

返回docker服务器,复制tomcat到容器里

docker cp apache-tomcat-8.5.47.zip mycentos:/root/
复制代码

进入容器

docker attach mycentos
复制代码

0

退出容器:

exit
复制代码

0

查找容器

docker ps -a
复制代码

0

报错:

You cannot attach to a stopped container, start it first
复制代码

0

解决方案:启动容器

0

查看容器里的tomcat

0

解压zip

先安装unzip

0

0

移动到

mv apache-tomcat-8.5.47 /usr/local/tomcat8
复制代码

容器提交为新的镜像

先退出容器

exit
复制代码

容器提交为新的镜像

docker commit mycentos mytomcat8
复制代码

0

使用新的镜像启动tomcat容器

-p是端口映射

docker run -d -i -t --name=tomcat -p 8888:8080 mytomcat8 /bin/bash
复制代码

 0

0

启动tomcat容器

 0

启动tomcat

注意:访问的端口是docker映射的端口,而不是tomcat本身的端口

到此结束,over!

文章分类
后端
文章标签