怎样添加网站图标,网站国外空间,濮阳市建设局网站,为什么做街舞网站一、Docker简介 1.Docker之父Solomon Hykes形容docker就像传统的货运集装箱。 2.docker的特点和优势#xff1a; 轻量级虚拟化#xff1a;Docker容器相较于传统的虚拟机更加的轻量和高效#xff0c;能够快速的启动和停止来节省系统资源。 一致性#xff1a;确保应用程序在不…一、Docker简介 1.Docker之父Solomon Hykes形容docker就像传统的货运集装箱。 2.docker的特点和优势 轻量级虚拟化Docker容器相较于传统的虚拟机更加的轻量和高效能够快速的启动和停止来节省系统资源。 一致性确保应用程序在不同的环境中具有一致的运行表现 可移植性可以轻松的将docker从一个平台迁移到另一个平台无需考虑依赖和环境配置的差异 最高的资源利用多个docker可以共享主机的操作系统内核从而可以更有效的利用系统资源。 易于部署和扩展能够快速部署新的应用实例也可以轻松的进行水平扩展 3.docker在企业中的应用场景 4.docker的优势 对于开发人员build once and run anywhere 对于运维人员configure once and run anything
二、部署docker 1.容器工作方法 2.安装docker-ce并启动服务 yum install docker-ce -y 编辑docker 启动文件设定其使用iptables的网络设定方式默认使用nftables
vim /usr/lib/systemd/system/docker.service
ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock
--iptablestrue 启动docker:systemctl enable docker --now 在rhel7中需要修改以下配置信息其目的是将桥接网口的流量交给iptables处理使用iptables的规则进行流量过滤以及启用网络数据的转发功能即可以将一个网口的数据包转发到另外一个接口上
vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables 1
net.bridge.bridge-nf-call-ip6tables 1
net.ipv4.ip_forward 1
三、Docker的基本操作 1.dcoker 镜像管理 搜索镜像docker search nginx 拉取镜像docker pull busybox 查看本地镜像docker iamges 查看镜像信息docker image inspect nginx:1.26 保存镜像docker image save nginx:latest -o nginx-latest.tar.gz 删除镜像docker rmi nginx:latest 2.容器的常用操作 启动容器docker run -d --name mario -p 80:8080 xiao/mario docker run -it --name centos7 centos:7 进入容器中按ctrld退出并停止容器按ctrlpq退出但不停止容器其中-d参数表示容器在后台运行当前终端会立即返回且容器的输出不会显示在终端宿主机的80端口会映射到容器的8080端口可以通过浏览器访问 http://localhost来访问会将该请求转发到容器内的web应用。其中 -i参数表示以交互模式运行容器使容器的标准输入保持打开状态-t参数表示为其分配一个伪终端即可以在容器内使用命令行工具。 重新进入容器docker attach centos7 在容器中执行命令docker exec -it test ifconfig 查看当前运行容器docker ps 查看所有容器docker ps -a 查看容器运行的详细信息docker inspect busybox 停止容器docker stop busybox 杀死容器docker kill busybox 开始停止的容器docker start busybox 容器内的第一个进程必须一直处于运行状态否则这个容器会处于退出状态 删除停止的容器docker rm centos7 删除运行的容器docker rm -f busybox 删除所有停止的容器docker container prue -f 3.容器内提交
docker run -it --name test busybox
touch testfile
#删除容器
docker rm test
#删除容器后开启新的容器文件
docker run -it --name test busybox通过上述示例可以看到容器内刚开始创建的文件已经不存在当需要在再次打开容器时仍然可以看到之前创建过的文件可以执行容器内内容提交的命令来永久保存
#容器内内容提交命令
docker commit -m add testfile test busybox:v1
#查看本地镜像的提交动作
docker image history busybox:v1 4.系统中文件和容器中的文件传输
#把容器中文件复制到本机
docker cp test2:/testfile /mnt
#把本机文件复制到容器中
docker cp /etc/fstab test2:/fstab 5.查询容器内部日志docker logs web
四、docker 镜像构建 1.docker 镜像结构 共享宿主机的kernel 采用分层结构最大的好处是共享资源 2.镜像运行的基本原理 copy-on-write可写容器层容器以下所有镜像层都是只读的docker从上往下依次查找文件容器层保存镜像变化的部分并不会对镜像本身进行任何修改。 3.镜像获取方式 docker pull 镜像地址 docker load -i 本地镜像包 4.镜像构建参数 5.dockerfile实例
[rootserver1 ~]# mdkir docker
[rootserver1 ~]# cd docker/
[rootserver1 docker]# cp ~/nginx-1.23.3.tar.gz .
[rootserver1 docker]# vim Dockerfile
FROM centos:7
ADD nginx-1.23.3.tar.gz /mnt
WORKDIR /mnt/nginx-1.23.3
RUN yum install -y gcc make pcre-devel openssl-devel
RUN sed -i s/CFLAGS$CFLAGS -g/#CFLAGS$CFLAGS -g/g auto/cc/gcc
RUN ./configure --with-http_ssl_module --with-http_stub_status_module
RUN make
RUN make install
EXPOSE 80
VOLUME [/usr/local/nginx/html]
CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;] 6.通过dockerfile生成镜像docker build -t webserver:v1 7.镜像优化示例 缩减镜像层docker会将每个指令执行的结果作为一个单独的镜像层每个镜像层都有自己的文件系统它们相互堆叠
[rootserver1 docker]# vim Dockerfile
FROM centos:7 as build
ADD nginx-1.23.3.tar.gz /mnt
WORKDIR /mnt/nginx-1.23.3
RUN yum install -y gcc make pcre-devel openssl-devel sed -i s/CFLAGS$CFLAGS
-g/#CFLAGS$CFLAGS -g/g auto/cc/gcc ./configure --with-http_ssl_module --
with-http_stub_status_module make make install cd .. rm -fr nginx-
1.23.3 yum clean all
EXPOSE 80
VOLUME [/usr/local/nginx/html]
CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;] docker build -t webserver:v2 多阶段构建允许使用多个from语句构建镜像
[rootserver1 docker]# vim Dockerfile
FROM centos:7 as build
ADD nginx-1.23.3.tar.gz /mnt
WORKDIR /mnt/nginx-1.23.3
RUN yum install -y gcc make pcre-devel openssl-devel sed -i s/CFLAGS$CFLAGS
-g/#CFLAGS$CFLAGS -g/g auto/cc/gcc ./configure --with-http_ssl_module --
with-http_stub_status_module make make install cd .. rm -fr nginx-
1.23.3 yum clean all
FROM centos:7
COPY --frombuild /usr/local/nginx /usr/local/nginx
EXPOSE 80
VOLUME [/usr/local/nginx/html]
CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;]