Docker —— 简介与镜像用法
2021/11/25 13:09:46
本文主要是介绍Docker —— 简介与镜像用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、容器简介
Docker是管理容器的引擎。
Docker为应用打包、部署平台,而非单纯的虚拟化技术。
docker容器的优势:
对于开发人员:Build once、Run anywhere。
对于运维人员:Configure once、Run anything。
二、容器的部署
docker源:
[root@server1 yum.repos.d]# cat docker.repo
[docker] name=docker-ce baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/ gpgcheck=0
因为在安装docker-ce时有许多依赖性,都是Centos源
我们在仓库源搭建Centos源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e ‘/mirrors.cloud.aliyuncs.com/d’ -e ‘/mirrors.aliyuncs.com/d’ /etc/yum.repos.d/CentOS-Base.repo
编辑Centos仓库源:%s/$releasever/7/g
安装docker-ceyum install docker-ce -y
systemctl enable --now docker
此时执行docker info会报错
[root@server1 sysctl.d]# pwd /etc/sysctl.d [root@server1 sysctl.d]# cat docker.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 sysctl --system
这下就不会报错
三、Docker镜像
1.镜像的分层结构
共享宿主机的kernel
base镜像提供的是最小的Linux发行版
同一docker主机支持运行多种Linux发行版
采用分层结构的最大好处是:共享资源
Copy-on-Write 可写容器层
容器层以下所有镜像层都是只读的
docker从上往下依次查找文件
容器层保存镜像变化的部分,并不会对镜像本身进行任何修改
一个镜像最多127层
2.镜像的构建
docker commit 构建新镜像三部曲
运行容器
修改容器
将容器保存为新的镜像
缺点:
效率低、可重复性弱、容易出错
使用者无法对镜像进行审计,存在安全隐患
docker commit -m “add files” demoo demo:v1
或创建一个Dockerfile:
cat /root/Docker
FROM busybox RUN touch file1 RUN mkdir LINUX
构建镜像:
docker build -t demo:v1 .
查看镜像的分层结构:
[root@server11 Docker]# docker history demo:v1 IMAGE CREATED CREATED BY SIZE COMMENT 08d1b013dbd9 39 minutes ago /bin/sh -c mkdir westos 0B 655ad284a2b5 39 minutes ago /bin/sh -c touch file1 0B 59788edf1f3e 2 years ago /bin/sh -c #(nop) CMD ["sh"] 0B <missing> 2 years ago /bin/sh -c #(nop) ADD file:63eebd629a5f7558c… 1.15MB
四、Dockerfile详解:
dockerfile常用指令:
FROM
指定base镜像,如果本地不存在会从远程仓库下载。
MAINTAINER
设置镜像的作者,比如用户邮箱等。
COPY
把文件从build context复制到镜像
支持两种形式:COPY src dest 和 COPY [“src”, “dest”]
src必须指定build context中的文件或目录
ADD
用法与COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest
ENV
设置环境变量,变量可以被后续的指令使用:
ENV HOSTNAME sevrer1.example.com
EXPOSE
如果容器中运行应用服务,可以把服务端口暴露出去:
EXPOSE 80
VOLUME
申明数据卷,通常指定的是应用的数据挂在点:
VOLUME ["/var/www/html"]
WORKDIR
为RUN、CMD、ENTRYPOINT、ADD和COPY指令设置镜像中的当前工作目录,如果目录不存在会自动创建。
RUN
在容器中运行命令并创建新的镜像层,常用于安装软件包:
RUN yum install -y vim
CMD 与 ENTRYPOINT
这两个指令都是用于设置容器启动后执行的命令,但CMD会被docker run后面的命令行覆盖,而ENTRYPOINT不会被忽略,一定会被执行。
docker run后面的参数可以传递给ENTRYPOINT指令当作参数。
Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。
cat /root/dockerfile
FROM demo:v1 在demo:v1的基础上 RUN touch file3 建立file3 COPY index.html / 复制文件到容器里 ADD test.tar.gz /mnt 加此压缩包到容器里的/mnt下 ENV HOSTNAME server11 定义变量$HOSTNAME=server11 EXPOSE 80 暴露80端口 VOLUME ["/data"] 再此目录里建立的文件,在/var/lib/docker/volumes/下的目录数据里有刚才新建的文件,如果再此目录建立文件,也会同步到容器里。
docker build -t demo:v9 . [root@server11 Docker]# docker run -it --rm demo:v9 / # ls LINUX data file1 home proc tmp westos REDHAT dev file2 index.html root usr bin etc file3 mnt sys var / # env HOSTNAME=server11 SHLVL=1 HOME=/root TERM=xterm PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ / # cd /mnt/ /mnt # ls etc
这篇关于Docker —— 简介与镜像用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Docker环境部署资料详解
- 2024-12-24Docker环境部署教程:新手入门详解
- 2024-12-24Docker环境部署项目实战教程
- 2024-12-24Docker环境部署学习:初学者指南
- 2024-12-24Docker环境部署入门:新手必读指南
- 2024-12-20Docker部署资料:新手入门教程
- 2024-12-19Docker部署实战:新手入门教程
- 2024-12-19Docker部署教程:新手入门详解
- 2024-12-09云原生周刊:在Docker上部署大语言模型
- 2024-12-05Docker教程:新手快速入门指南