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

相关推荐
黑金IT31 分钟前
本地 Docker 镜像送上云:腾讯云无服务器与容器化全栈迁移实战
docker·serverless·腾讯云
勇往直前plus1 小时前
CentOS 7 环境下 RabbitMQ 的部署与 Web 管理界面基本使用指南
前端·docker·centos·rabbitmq
Roam-G2 小时前
在 Mac 上使用 Docker 安装 Milvus 2.6.2
docker·容器·milvus
繁星星繁2 小时前
C++11学习笔记
c++·笔记·学习
敲上瘾3 小时前
Docker镜像构建指南:Dockerfile语法与docker build命令全解析
linux·服务器·docker·微服务·容器
YC运维7 小时前
Dockerfile实战案例详解
运维·docker·容器
@小博的博客7 小时前
【Linux探索学习】第二篇Linux的基本指令(2)——开启Linux学习第二篇
linux·运维·学习
007php0079 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
知识分享小能手10 小时前
微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
前端·javascript·学习·react.js·微信小程序·小程序·vue
递归不收敛10 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记:3.3 推荐系统全面解析
pytorch·学习·机器学习