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

相关推荐
行然梦实10 分钟前
学习日记_20241110_聚类方法(K-Means)
学习·kmeans·聚类
马船长15 分钟前
制作图片木马
学习
sam-12319 分钟前
k8s上部署redis高可用集群
redis·docker·k8s
秀儿还能再秀27 分钟前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
WCF向光而行32 分钟前
Getting accurate time estimates from your tea(从您的团队获得准确的时间估计)
笔记·学习
wang09071 小时前
工作和学习遇到的技术问题
学习
Fanstay9851 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
Li_0304062 小时前
Java第十四天(实训学习整理资料(十三)Java网络编程)
java·网络·笔记·学习·计算机网络
心怀梦想的咸鱼2 小时前
ue5 蓝图学习(一)结构体的使用
学习·ue5
death bell2 小时前
Docker基础概念
运维·docker·容器