首页 > 其他分享 > Docker 基础02

Docker 基础02

时间:2023-10-11 20:55:40浏览次数:32  
标签:02 容器 RUN -- 基础 nginx Docker data docker

七、Docker数据持久化

7.1 将本地目录映射到容器

mkdir -p /data
docker run -itd -v /data/:/data --name=test01  centos bash   # -v 指定挂载目录,:前面的/data/ 为宿主机本地目录,:后面的/data/为容器的目录。

 在/data/目录创建一个文件

echo 'hello k8s' >/data/hello.txt

 在容器里查看文件

docker exec -it test01 bash -c "cat /data/hello.txt"

7.2 数据卷

将宿主机目录挂载到容器目录

数据卷特点:

  • 在容器启动初始化时,如果容器使用的宿主机挂载点有数据,这些数据会copy到容器中。
  • 数据卷可以在容器中直接使用。
  • 容器可以修改数据卷的内容
  • 数据卷的变化不会影响镜像的更新。
  • 删除容器不会影响数据卷的数据

创建数据卷

docker volume create testvol

列出数据卷

docker volume ls

查看数据卷

docker volume ls

查看数据卷信息

docker volume inspect  testvol

使用数据卷

docker run -itd --name=test02 -v testvol:/data/ centos 

多个容器共享一个数据卷

docker run -itd --name test03 -v testvol:/data/ centos 

从容器copy到宿主机或从宿主机copy到容器

docker cp /etc/passwd  test01:/tmp/
docker exec -it test01 cat /tmp/passwd

docker cp test01:/tmp/passwd /tmp/

八、Docker网络模式和端口

Docker 服务启动时会生成一个docker0的网卡,这个网卡是实现容器网络通信的根本,默认容器使用网络类型为桥接(bridge)模式。

每启动一个容器,都会产生一个虚拟网卡vethxxx

查看Docker相关的 nat表

iptables -nvL -t nat

8.1 Docker支持五种网络模式

8.1.1 host模式

容器不会获得一个独立的network namespace,而是使用宿主机network namespace,共享宿主机ip

docker run -itd --name=test001 --net=host centos

这种模式,容器和宿主机共享主机名和ip。

8.1.2 container模式

在启动容器时,需要指定容器ID或者name,将要启动的容器使用和目标容器一样的网络。与指定的容器使用同一个network namespace ,网卡配置也相同。

docker run -itd --net=container:/test001 --name=test002 centos

8.1.3 none 模式

不需要配置网络

docker run --itd --net=none --name=test003 centos  bash

ip addr 查看没有ip

docker exec -it test003 bash -c "ip add"

8.1.4 bridge模式

默认网络,或者使用--net=bridge 指定配置

8.1.5 自定义docker 网段

默认与bridge网络一样

docker network create zhan
docker network ls
docker run -itd --name=test005 --network=zhan nginx

8.2 端口映射

docker run -itd -v /data/:/var/www/html/ -p 8080:80 --name=test006 centos bash

九、Dockerfile格式讲解

Dockerfile:实现自定义镜像的一种手段,通过编写Dockerfile,编译成想要的镜像。

9.1 FROM 指定基础镜像

FROM centos:7

9.2 MAINTAINER 指定作者信息

MAINTAINER ZHAN [email protected]

9.3 RUN 后面跟具体的命令

RUN yum update -y 
RUN yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

9.4 CMD 指定容器启动时用到的命令,只能有一条

CMD command param1 param2
CMD ["param1","param2"]
CMD ["/bin/bash","/usr/local/nginx/sbin/nginx","-c","/usr/local/nginx/conf/nginx.conf"]

9.5 EXPOSE 指定要映射的端口

EXPOSE <port> [<port>...]
EXPOSE 22 80 8080 443  # 启动容器时,-P 自动分配端口,-p指定具体端口

 9.6 ENV 为后续的RUN指令提供一个环境变量。

EMV MYSQL_VERSION 5.7

9.7 ADD 将本地的一个文件或目录copy到容器的某个目录,其中src为Dockerfile所在目录的相对路径,也可以是一个路径。

ADD conf/vhost /usr/local/nginx/conf
ADD http://nginx.org/download/nginx-1.24.0.tar.gz .

9.8 COPY 类似ADD,将本地文件copy到容器,不支持URL。

COPY passwd /tmp/123.txt

9.9 ENTRYPOINT 格式类似CMD

容器启动时要执行的命苦,只有一条生效,如果有多个,只有最好一条生效。

ENTRYPOINT /usr/local/nginx/sbin/nginx -g "daemon off;"

 9.10 VOLUME 创建一个可以从宿主机或者其他容器挂载的挂载点

VOLUME ["/data"]

9.11 USER 指定RUN、CMD或者ENTRYPOINT 运行时使用的用户

USER zhan

9.12 WORKDIR 为后续的RUN、CMD或者ENTRYPOINT 指定工作目录

WORKDIR /opt/

十、Dockerfile编译自定义镜像

10.1 Build 镜像命令

使用Dockerfile文件构建镜像

docker build [OPTIONS] PATH|URL|

-t,--tag list #指定镜像名称标签

-f,--file string #指定Dockerfile文件位置

docker build -t 镜像名 . #默认找当前目录下的Dockerfile文件

10.2 使用Docker 创建nginx容器

cat Dockerfile 
FROM centos:7
RUN yum update -y 
RUN yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
ADD http://nginx.org/download/nginx-1.24.0.tar.gz .
RUN tar zxvf nginx-1.24.0.tar.gz
RUN mkdir -p /usr/local/nginx
RUN cd nginx-1.24.0  && ./configure --prefix=/usr/local/nginx && make && make install
COPY index.html /usr/local/nginx/html/index.html
EXPOSE 80
ENTRYPOINT /usr/local/nginx/sbin/nginx -g "daemon off;"

# docker build -t nginx:v1 .
# docker run -itd --name test_nginx -P nginx:v1
# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED          STATUS          PORTS                                     NAMES
23eb06eb1c63   nginx:v1   "/bin/sh -c '/usr/lo…"   13 seconds ago   Up 12 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   test_nginx
# curl 127.0.0.1:32768

 

ADD和COPY的区别是什么? Dockerfile 中COPY和ADD 都可以从src路径负责文件到容器的dest路径。 ADD <src> <dest> src 可以是we年或者目录,也可以是url ADD 不仅仅可以将文件复制到容器的路径,还可以解压压缩包。 COPY 只能实现复制,不能解压文件,也支持url    

标签:02,容器,RUN,--,基础,nginx,Docker,data,docker
From: https://www.cnblogs.com/pythonlx/p/17755909.html

相关文章

  • 网络基础-OSI七层vsTCP/UDP四层 五层 数据封装
    1.0网络基础1.1网络是什么?网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享网络分类:局域网,城域网,广域网1.2数据通信方式单播:一对一组播:一对多广播:一对所有2.0OIS七层模型vsTCP/IP四层五层模型 2.1分层思想①......
  • 2023/10/11 网络的学习
    学习笔记1网络基础1.1 什么是网络网络:计算机网络,电脑和电脑之间通过线缆或其他介质连接起来,并实现相互之间的通信。通信:人与人,人与物,物与物之间通过某种媒介和行为进行沟通。1.2 网络的分类局域网:作用于相对较小区域。例如企业内部网络,校园内部网络等。城域网:作用于城......
  • 20231011
    20231011NOIP#18总结时间安排7:50~8:30看题,\(A,C\)一眼切,\(B\)不会一点,\(D\)应该能爆搜不知道拿多少分。8:30~8:40写\(A\)的正解。8:40~9:40写\(C\)的正解。9:40~10:20写\(D\)的爆搜再加点剪枝,打点数据特判希望骗分。10:20~11:50写了\(B\)的爆搜,然后打特殊......
  • 修改docker默认存储路径方法总结
    默认情况下,docker镜像的默认存储路径是/var/lib/docker或其他根目录,有的服务器本身硬盘容量不足需要挂载到数据盘中,所以总结一下修改docker的默认路径,方法如下:先创建新的docker目录mkdir/home/docker以挂载home目录为例,此处也可另外挂载一块磁盘,把新的docker目录建在新磁盘上......
  • [C语言快速入门] 基础知识和基本数据类型
    [C语言快速入门]基础知识和基本数据类型这里主要的知识点主要来自这两个教学视频:史上最强最细腻的linux嵌入式C语言学习教程【李慧芹老师】_哔哩哔哩_bilibiliC语言基础入门_C3程序猿_哔哩哔哩_bilibili这本书:《CPrimerPlus(第6版)中文版》在本文开篇之前,想简单写一下关于......
  • 软件测试|Linux 基础教程:创建和删除目录
    简介在Linux系统中,创建和删除目录是非常常见的操作。目录是用于组织文件和其他目录的一种结构,它们是组织文件系统的重要组成部分。本文将介绍如何在Linux系统中创建和删除目录。创建目录在Linux中,可以使用mkdir命令来创建一个新的目录。mkdir是MakeDirectory(创建目......
  • 网络基础
    背景计算机网络的诞生背景可以追溯到20世纪60年代和70年代的美国。当时,计算机的发展迅速,但是由于计算机之间缺乏互联,使得它们之间的通信和数据共享变得非常困难。在这种情况下,计算机科学家开始研究如何将计算机连接起来,以便它们可以相互通信和共享资源。这导致了计算机网络的发展......
  • 软件测试|docker搭建Jenkins+Python+allure自动化测试环境
    简介本文将详细介绍如何使用Docker搭建一个完整的自动化测试环境,其中包括Jenkins作为持续集成和持续交付工具,Python作为测试脚本编写语言,以及Allure作为测试报告生成工具。通过使用Docker容器,您可以轻松地设置和管理这些工具,提高测试效率和质量。安装docker安装docker的步骤,可......
  • 2023_10_11_MYSQL_DAY_03_笔记_下
    2023_10_11_MYSQL_DAY_03_笔记_下#截断表的作用是把原来的表摧毁,重新创建一个结构和原来一模一样的新表,语法如下:TRUNCATETABLEtable;#TRUNCATE和DELETE区别#1、TRUNCATE是DDL命令,使用ROLLBACK不可以回滚。而DELETE是DML命令,使用ROLLBACK可以回滚。#2、DELETE可以通过指定......
  • docker和主机之间文件传输
    docker和主机之间文件传输1、从docker内部向主机传输文件语法:dockercp[OPTIONS]CONTAINER:SRC_PATHDEST_PATH|- 示例:将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中dockercp96f7f14e99ab:/www/tmp/ 2、从主机向docker内部传输文件语法:dockercp[......