docker笔记

docker 三要素:

镜像(images):

只读模板,用于创建docker容器。一个镜像可以创建多个容器

容器(container):

独立运行的一个或一组应用。是用镜像创建的运行实例,每个容器都是相互隔离的。

仓库:

集中存放镜像文件的地方。仓库分为公开仓库和私有仓库
最大公开仓库:Docker Hub https://hub.docker.com
仓库和仓库注册服务器的区别:
仓库注册服务器:放置多个仓库,每个仓库中包含多个镜像,每个镜像有不同的标签。

阿里云镜像加速:

进入阿里云容器镜像服务中的镜像加速器,选择相应的系统。复制加速地址。

设置本机docker加速配置:

  1. vim /etc/docker/daemon.json
  2. 把阿里云中的配置案例复制下来,修改其中的配置信息: 例如:
{
  "registry-mirrors": ["复制的个人加速地址"]
 }
  1. 重新加载:systemctl daemon-reload
  2. 重启docker:systemctl restart docker
  3. 查看docker在本机的进程信息:ps -ef|grep docker

docker 组成

  1. docker client 客户端
  2. docker daemon 守护进程
  3. docker image 镜像
  4. docker container 容器

docker命令:

帮助命令:

查看docker版本

docker version

查看docker信息

docker info

查看docker的帮助

docker --help

镜像命令:

查看本地所有镜像

# 参数:
#     -a:列出班底所有镜像(包括中间映像层)
#     -q:只显示镜像ID
#     --digests:显示镜像的摘要信息
#     --no-trunc:显示完整镜像信息
 docker images

在这里插入图片描述
PEPOSITORY: 镜像仓库源
TAG: 镜像标签
IMAGE ID: 镜像id
CREATE: 镜像创建时间
SIZE: 镜像大小

查找镜像

#  docker search [参数] 镜像名
#    参数:
#        -s:收藏数不小于指定值的镜像
#        --automated:只列出automated build类型的镜像
#		 --no-trunc:显示完整镜像信息
docker hello-world 

下载镜像

#  docker push 镜像名[:TAG]
#    参数:
#        -s:收藏数不小于指定值的镜像
#        --automated:只列出automated build类型的镜像
#		 --no-trunc:显示完整镜像信息
docker push  hello-world 

删除一个或多个镜像

# 删除单个
#  docker rmi [参数] 镜像名1[:TAG] 镜像名2[:TAG]...
#    参数:
#        -f:强制删除 
docker rmi  hello-world 

# 删除多个
# docker rmi [参数] $(docker images -qa)
# 参数:
#     -f:强制删除
docker rmi -f $(docker images -qa)

查看镜像的配置

# docker inspect 镜像名
docker inspect hello-world

启动镜像

#  docker start [-i] 镜像名
# 参数:
# 	-i: 交互式启动
docker start -i hello-world

进入正在运行的镜像

# docker attach 镜像名
docker attach hello-world

查看运行镜像中的进程

 # docker top 镜像名
 docker top hello-world

在运行的镜像中启动新进程

	docker exec [-d] [-i] [-t] 镜像名 [command] [arg....]

停止守护容器

# docker stop  镜像名
docker stop hello-world
# docker kill 镜像名
docker kill hello-world

容器端口映射

#  docker run [-P|-p] -i -t 镜像名
#  参数:
#	-P:publish-all=true | false (默认) 暴露所有端口
#	-p:publish=[] 指定端口映射

# 格式:
#    1.指定容器端口:
#		 docker run -p 端口号 -i -t  镜像名 /bin/bash
docker run -p 8080 -i -t hello-world /bin/bash

#    2.主机端口:容器端口:
#		 docker run -p 主机端口:容器端口 -i -t  镜像名 /bin/bash
docker run -p 80:8080 -i -t  hello-world /bin/bash

#    3.ip地址::容器端口
#		 docker run -p ip地址::容器端口 -i -t  镜像名 /bin/bash
docker run -p 127.0.0.1::8080 -i -t hello-world /bin/bash

#    4.ip地址:主机端口:容器端口
#		 docker run -p ip地址:主机端口:容器端口 -i -t  镜像名 /bin/bash
docker run -p 127.0.0.1:80:8080 -i -t hello-world /bin/bash

查看容器运行日志

# docker logs -f -t --tail 容器id
# 参数:
#	-f:跟随最新的日志打印
#	-t:加入时间戳
#	--tail:数字,显示最后多少条
docker logs -f -t --tail  d2c94e258dcb 

查看容器内部细节

# docker inspect 容器id
docker inspect d2c94e258dcb

进入容器启动命令的终端

直接进入,不会启动新的进程

# docker attach 容器id
docker attach d2c94e258dcb

在容器中打开新的终端,并启动新的进程

# docker exec -it 容器id bashshell
docker exec -it  d2c94e258dcb bashshell

从容器中拷贝文件到主机上

# docker cp 容器id:容器内路径   目的主机的路径
docker cp d2c94e258dcb:/home/user/test.txt  /root/test/

提交容器副本使之成为一个新的镜像

# docker commit [参数] 源镜像id 要创建的目标镜像名:[标签名]
# 参数:
#	-m:提交的描述信息
#	-a:作者
docker commit -a="zhangxiaosan" -m="it is tomcat which is haven't doct" e9bd0c5f0a37 zhangxiaosan/tomcat:9 

主机和容器文件夹绑定

# docker run -it -v /主机绝对路径目录:/容器内目录:[权限] 镜像名
# 	权限:
#		ro: read only 只读
#		wo: wirte only 只写
#		rw:  wirte and read 读写
docker run -it -v /home/content1:/home/:rw hello-world

容器间数据共享

# docker run -it -name 容器1别名  --volumes-from -name 容器2别名 容器2 
#		容器2,3继承容器1
#		删除容器1,容器2,3数据依然存在,且容器2,3数据依然共享

dockerFile镜像的构建文件

介绍

镜像的构建文件dockerFile是由命令和参数组成的脚本

dockerFile解析过程:

注意
  1. 每条保留字指令必须为大写且之后跟有至少一个参数
  2. 指令从上往下顺序执行
  3. #表示注解
  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
过程
  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器进行修改
  3. 执行类似的docker commit 的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新的容器
  5. 执行dockerFile中的下一条指令,直到所有的指令都执行完成

dockerFile保留的关键字

FROM

基础镜像,当前新的镜像是基于哪个镜像

MAINTAINER

镜像维护者的姓名和邮箱

RUN

容器构建时需要运行的命令

EXPOSE

当前容器暴露的端口号

WORKDIR

指定容器创建后,终端登录进来的工作目录,未指定时工作目录为根目录

ENV

用来在构建镜像过程中设计的环境变量

ADD

将宿主机目录下的文件拷贝到镜像,且ADD命令会自动处理URL和解压tar压缩包

COPY

类似ADD,拷贝镜像或目录到镜像中。将从构建上下文目录中<源路径>的文件或目录复制到新一层的镜像内<目标路径>的位置
用法:
方式1: COPY src dest
方式2: COPY [“src”,“dest”]

VOLUME

容器数据卷,用于保存数据和持久化工作

CMD

指定一个容器启动时需要运行的命令。 Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换

ONBUILD

当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承之后父镜像的ONBUILD被触发

构建镜像

# docker build -f Dockerfile所在目录 -t 构建的镜像标识/构建的镜像名
docker build -f /mydocker/Dockerfile -t zhangxiaosan/myDockerfileDemo1
构建自定义的DockerFile镜像
#	docker build -f DockerFile路径 -t 新镜像名:标签版本 .
# 末尾的点 . 代表当前的路径
docker build -f DockerFile_MyCenterOS -t mycenteros:1.0 .
案例1 自定义centos
dockerfile(DockerFile_MyCenterOS):
   FROM centos
   
   #设置环境变量
   ENV MYPATH /tmp
   
   #设置默认工作目录
   WORKDIR $MYPATH
   			
   #运行安装vim和net-tools
   RUN yum -y install vim
   RUN yum -y install net-tools
   			
   #暴露端口
   EXPOSE 80
   			
   CMD bin/bash

相关推荐

  1. docker笔记

    2024-04-12 14:42:03       35 阅读
  2. Docker笔记

    2024-04-12 14:42:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 14:42:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 14:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 14:42:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 14:42:03       20 阅读

热门阅读

  1. 详解Qt元对象系统

    2024-04-12 14:42:03       18 阅读
  2. 在Windows系统中开启SSH服务

    2024-04-12 14:42:03       19 阅读
  3. home assistant os安装docker

    2024-04-12 14:42:03       20 阅读
  4. 更改grub文件导致无法开机解决办法

    2024-04-12 14:42:03       42 阅读
  5. 分布式锁内容

    2024-04-12 14:42:03       18 阅读
  6. 怎么重构一个程序

    2024-04-12 14:42:03       15 阅读
  7. freeRTOS学习

    2024-04-12 14:42:03       43 阅读
  8. 身份证识别ocr、身份证实名认证接口文档

    2024-04-12 14:42:03       21 阅读
  9. 2024.03.31 校招 实习 内推 面经

    2024-04-12 14:42:03       58 阅读
  10. python-re正则笔记0.2.0

    2024-04-12 14:42:03       45 阅读
  11. Bert 将长段分成句子放在一个batch输入

    2024-04-12 14:42:03       21 阅读
  12. 掌握 Awk:Linux 文本处理的终极工具

    2024-04-12 14:42:03       21 阅读