0
点赞
收藏
分享

微信扫一扫

docker入门(镜像和容器的使用)docker使用教程相关系列 目录

何晓杰Dev 2022-02-23 阅读 71


docker使用教程相关系列 目录

目录

一、什么是docker 镜像

docker 镜像介绍

镜像与容器的关系

二、列出docker 镜像

三、拉取镜像

从docker hub拉取

ustc镜像源(推荐)

四、查找镜像

五、构建镜像 

安装 tomcat

1、先安装centos

 2、创建交互式容器

一、什么是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入门(镜像和容器的使用)docker使用教程相关系列 目录_构建

三、拉取镜像

从docker hub拉取

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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_镜像_02

解决方案:

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

ustc镜像源(推荐)

配置

cd /etc/docker

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_03

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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_04

重启docker服务

systemctl restart docker.service

拉取centos镜像

docker pull centos

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_docker_05

拉取成功后,查看

docker images

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_06

第三方镜像如何使用说明

​​https://hub.docker.com/search?type=image​​

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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_07


四、查找镜像

docker search tomcat

 NAME:镜像名

DESCRIPTION:镜像描述

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

OFFICIAL:是否官方

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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_镜像_08

五、构建镜像 

安装 tomcat

1、先安装centos

列出docker 镜像

docker images

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_docker_09

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

docker pull centos

 2、创建交互式容器

docker run -i -t --name=mycentos centos

注:

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

Options

Mean

-i

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

-t

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

 进入容器里面

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_10

安装JDK

yum install java-1.8.0-openjdk* -y

安装成功

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_11

设置环境变量

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

ls -lrt /usr/bin/java 
ls -lrt /etc/alternatives/java

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_12

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_容器_13

vi /etc/profile

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_镜像_14

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

注意: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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_15

生效命令:source /etc/profile 
测试命令:java -version

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_镜像_16

把tomcat复制到服务器上

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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_docker_17

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

docker cp apache-tomcat-8.5.47.zip mycentos:/root/

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_18

进入容器

docker attach mycentos

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_docker_19

退出容器:

exit

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_20

查找容器

docker ps -a

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_21

报错:

You cannot attach to a stopped container, start it first

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_docker_22

解决方案:启动容器

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_容器_23

查看容器里的tomcat

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_24

解压zip

先安装unzip

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_容器_25

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_26

移动到

mv apache-tomcat-8.5.47 /usr/local/tomcat8

容器提交为新的镜像

先退出容器

exit

容器提交为新的镜像

docker commit mycentos mytomcat8

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_拉取_27

使用新的镜像启动tomcat容器

-p是端口映射

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

 docker入门(镜像和容器的使用)docker使用教程相关系列 目录_容器_28

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_29

启动tomcat容器

 docker入门(镜像和容器的使用)docker使用教程相关系列 目录_容器_30

启动tomcat

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

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_镜像_31

到此结束,over!

docker入门(镜像和容器的使用)docker使用教程相关系列 目录_构建_06


举报

相关推荐

0 条评论