【docker1】docker的下载安装、容器与docker、Dockerfile的写法

devtools/2024/10/18 12:02:52/

1 容器

1、容器1、什么是容器?用镜像启动的一个对外可以提供服务的进程即为容器。1、容器的本质是进程2、容器是由镜像创建的,跟镜像中保存的内容完全一致。3、容器与容器之间是完全隔离的(可以理解为国中之国)4、每一个容器都需要做的是尽量保持自己的体积足够的小。2、容器的生命周期容器之内必须至少有一个进程运行在前台。如果一个进程都没有的话,那么此容器就相当于完成了它的声明周期。3、容器的基本使用0、查看本机容器列表docker ps # 查看本机容器列表[root@docker ~]# docker psCONTAINER ID   IMAGE     COMMAND   CREATED  		 STATUS    PORTS     NAMES容器的ID		镜像 容器的启动命令 容器的创建时间   容器的状态 容器的端口 容器的名称STATUS:UP : 		启动状态Exited :	停止状态Created :  容器已经创建,当时没有启动参数:-a : 查看系统上所有的容器(包含未启动)-q : 只显示容器ID1、创建容器docker run		# docker run是创建并启动容器docker create 	# docker create是创建容器docker create 中的参数跟 docker run 类似 主要其本身的功能不同。docker run 格式:docker run [参数] 镜像  [启动命令]参数和启动命令可以省略。容器的启动流程:①:查看本地是否存在正在使用的镜像。②:如果本地不存在使用的镜像,则去仓库下载③:根据镜像来启动容器参数:-d 	: 以守护进程方式运行容器。--name : 自定义容器的名称[root@docker ~]# docker run -d --name nginx  nginx-p 		: 指定一个端口映射-P		:随机一个端口映射-i		: 打开标准输出-t		:创建一个终端-e		:在容器内部增加一个环境变量-h		: 指定一个主机名(默认的主机名是容器的缩写版ID )-v 		: 指定一个挂载卷(将宿主主机的目录挂载到容器内,从而实现文件互通)--network	: 链接一个网桥--link		: 链接一个容器在宿主主机上执行一个容器内部的命令docker exec [容器的ID或名称] [需要在容器内部执行的名]docker exec centos3 printenv 启动一个容器docker start [容器的名称|ID][root@docker opt]# docker start centos62、停止容器docker stop [容器的名称|ID]3、删除容器docker rm [容器的名称|ID]docker rm -f [容器的ID或名称]案例:删除所有容器:docker rm -f $(docker ps -a -q)4、查看容器详细状态docker inspect [容器的ID或名称]案例:要求判断指定容器是否正在运行?docker inspect -f '{{ .State.Running }}'  2d4f2e701fa85、复制容器中的内容1、将容器内的文件复制到宿主主机docker cp [容器的ID]:[文件路径]  宿主主机路径docker cp ae1cde866e07:/root/init.sh /tmp/2、将宿主主机上的内容复制到容器docker cp [宿主主机路径] [容器的ID]:[文件路径]docker cp init.sh ae1cde866e07:/root/6、进入容器1、attachattach是进入容器,原理是将容器内的PID为1的进程开辟一个管道,链接到宿主主机。当在宿主主机上退出时,容器也随即退出(结束了生命周期)2、exec(推荐)exec其本质是在宿主主机上执行一个容器内的命令,但是加上-it参数,可以达到进入容器的效果,其原理是在容器内部新创建一个bash进程。所以当exec退出时不影响容器的正常运行。docker exec -it [容器的名称] [进入容器执行的命令]3、nsenternsenter的原理是建立一个管道进程,链接到容器的内部。nsenter --target $( docker inspect -f '{{.State.Pid }}'  ) --mount --uts --ipc --net --pid[root@docker ~]# nsenter --target $( docker inspect -f '{{.State.Pid }}' centos ) --mount --uts --ipc --net --pid4、ssh的方式(及其不推荐)7、保存容器为镜像1、保存镜像(针对点是镜像)将镜像打包,发送到远程服务器docker save # 将镜像保存成压缩包[root@docker ~]# docker save -o image.tar    nginx:latest   centos:latest[root@docker ~]# docker save > image.tar  nginx:latest   centos:latestdocker load # 将镜像包导入本地镜像中[root@docker ~]# docker load -i image.tar [root@docker ~]# docker load < image.tar 2、保存容器为镜像(针对点是容器)将容器打包成镜像1、将容器保存成镜像docker exportdocker export -o nginx.tar  modest_tharp2、将镜像包导入本地镜像中docker import docker import nginx.tar nginx:v13、保存容器将容器保存成本地镜像docker commit docker commit -a "ShanHe" -m "这是一个弟弟" -p modest_tharp   nginx:v28、查看容器的运行日志docker logs [容器的ID或名称]docker logs modest_tharp参数:-f : 持续监控docker logs -f modest_tharp9、暂停容器和重新运行容器容器将暂停服务docker pause modest_tharp重新运行容器,恢复提供和服务docker unpause modest_tharp10、容器的运行状态案例:用容器搭建一个小游戏1、代码(宿主主机)2、将目录映射到容器3、映射端口docker run -d --name mario -v /opt/html5-mario:/usr/share/nginx/html -p 8080:80  nginx4、浏览器测试

docker_230">2 docker

1、Docker1、现有的互联网架构的劣势1000台虚拟机(CentOS 7)1、保证百分百不宕机CentOS 7  :  systemctl start mysqldCnetOS 6service mysqld start CentOS 7  :  yum install mysql Ubuntu 16 :  apt-get install mysqlbusybox   : apt install mysql 2、要求自动化(Ansible)service : name: mysqld yum:name: mysqlwhen: apt:name: mysqlwhen 3、自动化运维(Python 操作 Ansible)4、如果我们的虚拟机不支持我们所需要安装的机器的时候?5、怎样保证快速稳定的部署并运行应用?需要一个提前打包好了的,拿来就能运行的应用,而且需要支持各种异构环境的服务变得尤为重要。镜像  --->  容器  --->  运行一个容器隔离的环境  --->  容器2、Docker简介docker是一个容器工具,包含docker中的三大概念:镜像、容器以及仓库。容器编排工具docker三剑客kubernetes    占领容器编排市场90% 3、安装Dockerdocker分为企业版和社区版企业版	: docker 社区版	: docker-ce https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/# 安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2# 安装yum源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo# 安装 [root@localhost ~]# yum install docker-ce-19.03.9 -y4、镜像1、什么是镜像?用来启动容器的模板,镜像一般是存在镜像仓库中的。镜像仓库地址:https://hub.docker.com/search?type=image仓库分为三种:官方仓库:		hub.docker.com第三方仓库:	https://cr.console.aliyun.com/cn-hangzhou/instance/repositories自建仓库	:  haobor2、镜像的相关命令1、搜索镜像[root@localhost ~]# docker search centosNAME                              DESCRIPTION                                     STARS     OFFICIAL          AUTOMATEDcentos                            The official build of CentOS.                   6809      [OK]       ansible/centos7-ansible           Ansible on Centos7                              135                           [OK]镜像的名称						该镜像的介绍							镜像的收藏数  是否是官方镜像       是否是自建镜像2、下载镜像[root@localhost ~]# docker pull centos镜像名称的构成:[仓库URL]/[仓库的名称空间]/[仓库的名称]:[镜像的版本号]默认的仓库URL:docker.io默认的仓库名称空间:library仓库的名称:没有默认镜像版本号:默认是latest3、查看本地镜像列表docker images 或者 docker image ls[root@localhost ~]# docker images REPOSITORY   TAG       IMAGE ID       CREATED       SIZEcentos       latest    5d0da3dc9764   5 weeks ago   231MBREPOSITORY:[仓库URL]/[仓库的名称空间]/[仓库的名称]TAG	: 版本号IMAGE ID : 缩写版的镜像IDCREATED	:创建该容器到现在的时间SIZE	:镜像大小[root@localhost ~]# docker image lsREPOSITORY   TAG       IMAGE ID       CREATED       SIZEcentos       latest    5d0da3dc9764   5 weeks ago   231MB4、查看镜像的详情docker inspect [镜像名称或ID]5、更改镜像的名称docker tag [原来的名称] [新名称]6、上传镜像将镜像上传至远程仓库。1、登录仓库2、修改镜像名称docker tar  registry.cn-hangzhou.aliyuncs.com/k8sos/centos:v13、上传镜像docker push [仓库URL]/[仓库的名称空间]/[仓库的名称]:[版本号]7、登录仓库docker login [仓库URL]仓库URL默认是:docker.io 8、创建镜像9、删除镜像docker rmi [仓库的名称ID]docker rmi [root@localhost ~]# docker rmi test:v110、修改镜像镜像一旦被创建,将无法进行修改,除非重新创建。11、查看镜像的构建历史[root@localhost ~]# docker history centosIMAGE          CREATED       CREATED BY                                      SIZE      COMMENT5d0da3dc9764   5 weeks ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        <missing>      5 weeks ago   /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        <missing>      5 weeks ago   /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0…   231MB  

Dockerfile的写法

1、访问容器中的服务1、端口映射2、使用IP# 构建镜像1、Dockerfile规范:Dockerfile命名必须D大写其他必须小写。Dockerfile中所有的指令必须大写构建镜像的命令docker build 参数:-t : 指定构建镜像的名称1、FROM指定基础镜像。在Dockerfile中唯一一个必须项。2、RUN在构建镜像时,运行指定的命令。注意:运行的命令必须是基础镜像中包含的命令;执行的结果直接保存在镜像中。3、ADD将指定的文件上传到镜像中。4、COPY将指定的文件复制到镜像中。COPY 和 ADD 之间的区别?1、ADD支持自动解压功能(只支持tar包解压),COPY不支持2、ADD支持通过URL下载文件(不支持自动解压),COPY不支持5、EXPOSE指定容器需要向外暴露的端口如果没有指定任何端口,可以使用-p做端口映射,但是不能使用-P做端口映射。6、VOLUME指定挂在卷,指定的挂载卷并不是设置了就挂载到指定的目录。当容器启动的时候,如果添加了-v参数,以-v参数为准,如果没有,则在宿主主机上的/var/lib/docker/volumes,随机映射。7、CMD指定一个容器的启动命令。全局只能有一个,如果有多个,最后一个生效。exec格式["nginx", "-g", "daemon off;"]shell格式nginx -g 'daemon off;'8、WORKDIR设置工作目录。运行应用程序时的启始目录(默认是根目录),可以这样理解,执行命令时相对路径的原始目录。9、ARG设置运行时变量。案例:要求写一个Dockerfile,实现每次安装的软件都是自定义。[root@kubernetes docker]# docker build --build-arg=PACKAGE=zsh -t nginx:v15 .10、ONBUILD触发器,ONBUILD后面跟指令,在构建是不会执行,当当前镜像作为基础镜像构建时执行。11、ENV设置一个环境变量。12、MAINTAINER设置维护者信息。13、ENTRYPOINT设置启动命令。ENTRYPOINT 和 CMD 的区别1、ENTRYPOINT 作为启动命令时无法被docker run覆盖(如果docker run指定命令,会被认为成ENTRYPOINT的参数)。
2、如果ENTRYPOINT和CMD指令同时存在,则CMD的相关内容会被设置成ENTRYPOINT的参数2、使用Dockerfile构建项目构建MySQL、PHP已经nginx镜像,实现搭建discuzGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;FLUSH PRIVILEGES;# docker-compose # Horbor私有仓库server {server_name _;listen 80;root /usr/share/nginx/html;location / {index index.php ;}location ~* \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

http://www.ppmy.cn/devtools/107391.html

相关文章

AI安全立法:加州新法案的争议与未来影响

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

2024.9.4

#include <iostream> #include <cstring> using namespace std;template<typename T> class Stack { private:int len;int count 0;T *stack; public:Stack():len(10) //无参构造{stack new T[len];stack[len] {0};}Stack(int len):len(len) …

2021年大厂Java面试题(基础+框架+系统架构+分布式+实战)

Java线程的状态 进程和线程的区别&#xff0c;进程间如何通讯&#xff0c;线程间如何通讯 HashMap的数据结构是什么&#xff1f;如何实现的。和HashTable&#xff0c;ConcurrentHashMap的区别 Cookie和Session的区别 索引有什么用&#xff1f;如何建索引&#xff1f; Arra…

浅聊kubernetes RBAC

RBAC 基于角色&#xff08;Role&#xff09;的访问控制&#xff08;RBAC&#xff09;是一种基于组织中用户的角色来调节控制对计算机或网络资源的访问的方法。 RBAC 鉴权机制使用 rbac.authorization.k8s.io API 组来驱动鉴权决定&#xff0c; 允许你通过 Kubernetes API 动态…

GPT-4o mini轻量级大模型颠覆AI的未来

GPT-4o mini发布&#xff0c;轻量级大模型如何颠覆AI的未来&#xff1f; 引言 随着人工智能技术的飞速发展&#xff0c;大型AI模型的发布已成常态。然而&#xff0c;庞大的计算资源和存储空间限制了它们在广泛场景中的应用。为满足市场需求&#xff0c;轻量级大模型应运而生&a…

大语言模型的超参数含义: Top-P 采样; Top-P 采样;logit_bias:

目录 大语言模型的超参数含义 Top-P 采样 频率惩罚(Frequency Penalty) top_k: logit_bias: top_logprobs: max_tokens: 大语言模型的超参数含义 Top-P 采样 含义:一种采样替代方法,称为核采样。模型考虑top_p概率质量的token结果。例如,0.1表示仅考虑组成前10%…

云计算的成本:您需要了解的 AWS 定价信息

AWS 定价方案、免费套餐优惠以及通过预先预留容量来降低总体成本的选项。 欢迎来到雲闪世界。越来越多的企业开始转向云基础设施而非本地数据中心&#xff0c;云领域的竞争空前激烈。主要参与者甚至不惜削减成本并提供令人难以置信的折扣&#xff0c;以在云市场中占据一席之地。…

Docker笔记-启动容器时,时间与宿主机保持一致

背景 启动容器时&#xff0c;有时容器内部时区或时间与宿主机不一样&#xff0c;有些开源的软件使用起来会有问题&#xff0c;所以需要进行同步 更新宿主机时间 宿主机使用ntp服务&#xff0c;更新时间 yum install ntp ntpdate cn.pool.ntp.org date 时间与北京时间一样后…