docker的学习

安装docker引擎

yum install -y docker

启动docker

systemctl start docker

设置docker自启动

systemctl enable docker

测试docker是否安装成功

docker run hello-world

镜像下载:

docker pull 镜像名字:[tag] 如果不指定tag,则下载docker hub 公共注册服务器中仓库的最新版本

查看镜像:

列出本地主机上已有的镜像

docker images

镜像搜索:

docker search [镜像名字]

删除镜像

docker rmi 源名字

docker rmi image id

创建容器

docker create -it 镜像名字

列出容器:

docker ps

新建并启动容器:

docker run 镜像名字 /bin/echo 'hello world'

下面命令启动一个bash端,运行用户交互

docker -run -t -i 镜像名称 /bin/bash

守护态运行:

docker run -d 镜像名字

终止容器:

docker stop 容器id

进入容器

在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息。某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令、docker exec命令,以及nsenter工具等。

attach命令

语法格式:

docker attach 容器id

exec命令

Docker自1.3版本起,提供了一个更加方便的工具exec,可以直接在容器内运行命令。例如进入到刚创建的容器中,并启动一个bash:

docker exec -it 容器id /bin/bash

查看日志:

docker logs容器id

查看容器里面的进程

docker top 容器id

从容器拷贝到主机上

docker cp 容器id:容器内路径 目录路径

数据卷概念:

数据卷是宿主机中的一个目录或文件

当容器目录和数据卷目录绑定后,对方修改会立即同步

一个数据卷可以同时被多个容器同时挂载

一个容器也可以被挂载多个数据卷

一句话: 卷技术就是为了实现数据的持久化和同步操作,容器间也是数据共享。

命令

docker run -v 宿主机目录(文件):容器内目录(文件)

注意事项:

目录必须是绝对路径

如果目录中不存在则会自动创建

可以挂载多个数据卷

Volume基本使用

参数:

create # 创建数据卷

inspect #查看数据卷元数据

ls #查看数据卷列表

prune #删除所有未使用的卷

rm #删除数据卷

创建一个自定义容器

docker volume create dmeo

查看所有容器卷

docker volume ls

查看指定容器卷详情信息

docker volume inspect demo

删除数据卷

docker volume rm demo

dockerfile

dockerfile是一个文本格式的配置文件,用户可以使用其快速创建自定义的镜像

基本结构

Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。一般而言,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

Dockerfile文件格式

bash 复制代码
# 1、第一行必须指定 基础镜像信息
FROM java:8
# 2、维护者信息
MAINTAINER 123
# 3、镜像操作指令
RUN echo "wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.55/bin/apache-tomcat-9.0.55.tar.gz" run tar -zxvf apache-tomcat-9.0.55.tar.gz -C /usr/local
# 4、容器启动执行指令
CMD /usr/local/tomcat/bin/catalina.sh

dockerfile四部分说明:

一开始必须要指明所基于的镜像名称,关键字是from

接下俩是维护者信息关键字是maintainer,非必须

后面是镜像操作指令,如run,每执行一条run命令,镜像添加新的一层

最后是cmd指令,来指明运行容器时的操作命令

from 这个镜像的妈妈是谁 指定基础镜像

maintainer 谁负责养他 指定维护者信息

run 想让他干什莫 再命令前面加上run即可

add 给他点创业资金 copy文件会自动解压

workdir 设置当前工作目录

volume 给他一个存放行李的地方 设置卷,挂载主机目录

expose 他要打开

cmd 指定容器启动后要干的事情

run指令创建的中间镜像会被缓存,并会再下次构建中使用。如果不想使用这些缓存镜像,可以再构建时指定--no-cache参数,如:docker build --no-cache

add 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget

copy 功能类型add,但是是不会自动解压文件,也不能访问网络资源

cmd和entrypoint

cmd:设置容器启动后默认执行的命令和参数

entrypoint设置容器启动时运行的命令

区别:cmd指定这个容器启动的时候要运行的命令,可被替换

entrypoint指定这个容器启动的时候要运行的命令,可以追加命令

每启动一个docker容器,docker就会给容器分配一个ip,只要安装docker就会有一个dcoker0网卡

evth-pair技术

evth-pair 就是一对的虚拟设备接口,它们都是成对出现,一段彼此连接。 正是因为这个特性,evth-parit桥梁。 连接各种各样网络设备。

docker 使用linux的桥接, 宿主机中时一个docker容器的网桥。 docker0 docker中所有网络接口都是虚拟的。 虚拟转发效率高只要容器删除 对应的网桥就没有了。

相关推荐
文火冰糖的硅基工坊1 小时前
[激光原理与应用-226]:机械 - 如何学习3D图设计
学习·3d·系统架构·公司·机械·结构
firshman_start2 小时前
SQL注入学习笔记
sql·学习
hl04062 小时前
GitLab CI + Docker 自动构建前端项目并部署 — 完整流程文档
ci/cd·docker·gitlab
鸢栀w3 小时前
前端css学习笔记3:伪类选择器与伪元素选择器
前端·css·笔记·学习·尚硅谷网课
alexander0684 小时前
Django路由学习笔记
笔记·学习·django
_hermit:6 小时前
【从零开始java学习|第三篇】变量与数据类型的关联
java·学习
苏侠客85211 小时前
在docker上部署fastapi的相关操作
docker·容器·fastapi
TDengine (老段)11 小时前
TDengine IDMP 快速体验(方式二 通过 docker)
大数据·数据库·docker·ai·时序数据库·tdengine·涛思数据
知识分享小能手12 小时前
Vue3 学习教程,从入门到精通,Vue 3 + Tailwind CSS 全面知识点与案例详解(31)
前端·javascript·css·vue.js·学习·typescript·vue3
wdfk_prog12 小时前
[Linux]学习笔记系列 -- [arm][lds]
linux·运维·arm开发·笔记·学习