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中所有网络接口都是虚拟的。 虚拟转发效率高只要容器删除 对应的网桥就没有了。

相关推荐
لا معنى له5 小时前
WAM与AC-WM:具身智能时代的世界动作模型与动作条件世界模型
人工智能·笔记·学习
薛先生_0997 小时前
js学习语法第一天
开发语言·javascript·学习
独隅7 小时前
PyTorch 模型部署的 Docker 配置与性能调优深入指南
人工智能·pytorch·docker
赵丙双7 小时前
多网卡微服务注册 IP/host 问题
微服务·eureka·nacos·consul·多网卡
寒秋花开曾相惜10 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
yuzhuanhei10 小时前
docker常用命令
运维·docker·容器
我叫张小白。10 小时前
Dify系列(一):平台安装部署+界面操作
docker·ai·语言模型·大模型·dify·智能体
anarckk10 小时前
docker volume 导入导出命令
运维·docker·容器
是翔仔呐10 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee