docker学习笔记

安装:

安装docke以及加速器

#安装加速器
vim /etc/docker/daemon.json 
输入:
{
 	"registry-mirrors" : [
		"https://8xpk5wnt.mirror.aliyuncs.com"
	]
}
---------------------------------------------------------
   systemctl daemon-reload
   systemctl enable docker
#重启docker
   systemctl restart docker

image-20240219212405333

启动一个docker容器

1.获取镜像
2.运行镜像,生成容器

Nginx 为例:

#1.获取镜像,从你配置好的docker镜像站上拉取
#先搜索镜像文件是否存在
docker search nginx
#拉取下载镜像
docker pull nginx

#查看本地镜像有哪些
docker image ls

#删除镜像
docker rmi [镜像id号]


#镜像运行命令
docker run 参数 镜像的名字/id
#-d 后台运行容器
#-p 80:80 端口映射,  宿主级端口:容器内端口

#运行该nginx镜像,运行出,具体的容器,然后容器中,就跑这一个nginx服务了
docker run -d -p 80:80 nginx
#run后返回容器id,如:
4543671188cfc5137b9432e08d0ce42a3387e7701c6021286e37632ebebe472d

#有哪些容器在运行
docker ps

#此时可以访问80端口了

#停止容器
docker stop 容器id

#启动容器
docker start 容器id

docker生命周期

image-20240219220430275

docker镜像原理1

一个完整的linux系统是由 linux内核发行版组成。

image-20240226152950357

#运行容器,且进入容器内
#参数解释  -i 交互式命令操作  -t 开启一个终端  bash 进入容器后执行的命令解释器
docker run -it id号 bash

#退出容器空间
exit

image-20240226203455924

docker镜像原理2

#进入正在运行的容器内
docker exec -it id号 bash

image-20240226212757662

Base Image 层 提供/etc、/opt等基础文件系统,上层的软件都会共用这一个base image

image-20240226213718032

如:

image-20240227000522003

这两个centos并不是占用400多M,而是他们相同的层会进行一个复用


如果在运行nginx时要修改、创建配置文件,并不是直接修改base image的

只会写入顶层的writable容器层(可写层),其余的下层为只读层

image-20240226213309085

image-20240226213626408

docker镜像的实际使用步骤:

image-20240226214216173

获取镜像

1.从dockerhub获取镜像

2.从本地导出、导入

3.私有的docker仓库

#获取镜像,镜像像托管仓库一样,好比yum源一样
#默认的docker仓库是 dockerhub,有大量的优质镜像

#搜索镜像
docker search 镜像名:tag


#下载镜像
docker pull 镜像名

#查看docker镜像路径
docker info | grep Root

#使用不同的镜像,生成容器
# -it 开启一个交互式的终端  --rm 容器退出时删除该容器
docker run -it --rm centos bash

查看镜像

#查看本地镜像
docker images

#查看具体的镜像
docker images 镜像名

删除镜像

#根据镜像的id,名字,摘要
#删除的镜像不得有依赖的容器记录
docker rmi id号(前三位即可)

#ps 查看正在运行的容器,-a 查看历史容器记录
docker ps -a

#删除容器记录
docker rm id号

镜像管理

#批量删除所有镜像,谨慎操作
docker rmi `docker images -aq`
#批量删除所有容器记录,谨慎操作
docker rm `docker ps -aq`
#导出镜像
#比如默认运行的centos镜像,不提供vim功能,运行该容器后,在容器内安装vim
#然后提交改容器,再导出该镜像为压缩文件,可以发给其他人用

#导出镜像的命令
docker image save centos:7.8.2003 > /opt/centos:7.8.2003

#导入镜像的命令
docker image load -i /opt/centos:7.8.2003

#查看镜像的详细信息
docker image inspect 镜像id

docker容器管理

docker rum 等于 创建+启动

注意

1.容器内的进程必须处于前台运行状态,否则容器就会直接退出。

2.如果容器内,什么事也没做,容器也会挂掉,容器内,必须有一个进程在前台运行。

#什么是前台运行?
比如在命令行 ping www.baidu.com
#什么是后台运行?
比如在命令行 ping www.baidu.com &

#运行容器的玩法,以基础centos镜像为例
#1.运行一个挂掉的容器
docker run centos
这个写法,会产生独立的容器记录,且容器没有内没有程序在跑,因此挂了,正确写法看2.
#2.运行容器,且进入容器内,且在容器内执行某个命令
docker rum -it centos bash

#3.开启一个容器,让他帮你运行某个程序,属于前台运行,会占用一个宿主机的终端
docker rum centos ping www.baidu.com

#4.运行一个活着的容器,docker ps可以看到容器
#-d 参数,让容器在后台跑着(针对宿主机而言),这样宿主机的终端可以继续进行操作
docker rum -d centos ping www.baidu.com

#5.丰富docker运行的参数
#--rm 跑完后删除这个容器记录  --name给容器起个名字
docker rum -d --rm  --name 名字 centos ping www.baidu.com

#6.查看容器日志
#刷新日志
docker logs -f id号

#7.进入正在运行的容器空间内
#运行历史容器
docker start 容器id
#exec用于进入容器空间内
docker exec -it 容器id bash
#停止容器运行
docker stop 容器id

#8.查看容器的详细信息,用于高级的调试
docker container inspect 容器id号

#9.容器的端口映射,(以nginx为例)
#后台运行nginx容器,且起个名字,且端口映射主机的85端口,访问到容器内的80端口
docker run -d --name 名字 -p 85:80 nginx

#9.1查看docker端口转发情况
docker port 容器id

#9.2随机端口映射 -P,大写的P
docker run -d --name 名字 -P nginx

#10.容器的提交
#运行基础的centos,在容器内安装vim ,然后提交新的镜像
#新的镜像,在运行出的容器,默认就携带vim了
docker commit 容器id 新的镜像名

dockerfile实践

用于构建docker镜像

相当于一个脚本,通过dockerfile自己的指令,构建

软件依赖,存储等

利用dockerfile自定义,想要的会用的 ,基础发行版,如果是直接pull下来的可能是deban,不会用啊!

image-20240227213058265

需求:
构建nginx镜像,且运行容器后生成的页面,页面内容为“Hallo”。

#1.创建Dockerfile:

FROM nginx
RUN echo '<meta charset=utf8>hallo docker!!' > /usr/share/nginx/html/index.html

#2.构建Dockerfile
#在Dockerfile目录
docker build .

#3.设置构建的镜像名
docker tag 镜像id my_nginx(自定义镜像名)

#4.运行镜像
docker run -d -p 80:80 my_nginx

dockerfile指令

image-20240227220913283

VOLUME指令原理:image-20240227221409900

指令语法:

image-20240227224022107

image-20240227223937778

经典问题:

image-20240227225834178

image-20240227225920264

ENTRYPOINT和CMD的区别和用法

image-20240227231343576

image-20240227231433477

image-20240227231820127

image-20240227231931104

image-20240227232035867

image-20240227232138522

image-20240227232222847

ARG和ENV指令

设置环境变量

image-20240227232813251

VOLUME指令

容器在运行时,应该保证在存储层不写入任何数据,运行在容器内产生的数据,我们推荐挂载,写入到宿主机上,进行维护

#将容器内的/data文件夹,在容器运行时,该目录自动挂载为匿名卷,任何向该目录中写入数据的操作,都不会杯容器记录,保证容器存储的无状态理念

VOLUME /data

#Dockerfile:
FROM centos
MAINTAINER KXHH
VOLUME ["/data1","/data2"]

#该容器运行时,这两个目录自动和宿主主机的目录做好映射关系
docker build .

#运行镜像
docker run 镜像id

#查看生成的容器信息
docker ps -a |head -2
#查看容器的详细信息,变量、存储等等很详细
docker inspect 容器id

容器数据挂载方式:

1.通过 dockerfile,指定VOLUME 目录

2.通过 docker run -v 参数 ,直接设置需要的映射挂载的目录

EXPOSE参数

指定容器运行时对外提供的端口服务

帮助使用该镜像的人,快速理解该容器的一个端口业务

docker port 容器
docker run -p 宿主机端口:容器端口
docker run -P 大写的p,宿主随机端口:容器端口

WORKDIR指令

用于在dockerfile 中,目录的切换,更改工作目录

WORKDIR /opt

USER指令

用于改变环境,用于切换用户

USER root
USER tom
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值