小说网站建设目的,做的网站怎样适配手机屏幕,网站制作需要多少钱?,邢台哪个公司做网站好docker与虚拟机的区别
首先要知道三个层次
硬件层:计算机硬件
内核层:与硬件交互#xff0c;提供操作硬件的指令
应用层: 系统应用封装内核指令为函数#xff0c;便于程序员调用。用户程序基于系统函数库实现功能。 docker在打包的时候直接把应用层的函数库也进行打包提供操作硬件的指令
应用层: 系统应用封装内核指令为函数便于程序员调用。用户程序基于系统函数库实现功能。 docker在打包的时候直接把应用层的函数库也进行打包所以不管是linux的什么系统都可以跑docker。
虚拟机基于Hypervisor,这个技术可以模拟计算机硬件所以可以运行不同的操作系统。 docker的架构
镜像和容器 docker和DockerHub docker架构 镜像基本命令
拉取镜像
docker pull ubuntu:20.04拉取一个镜像
docker pull nginx
列出本地所有镜像
docker images
删除镜像
docker image rm ubuntu:20.04
docker rmi ubuntu:20.04
导出压缩镜像
docker save -o ubuntu_20_04.tar ubuntu:20.04
加载镜像
docker load -i ubuntu_20_04.tar
创建某个容器的镜像
docker [container] commit CONTAINER IMAGE_NAME:TAG
容器相关命令
容器生命周期管理命令
docker exec 在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]-d :分离模式: 在后台运行-i :即使没有附加也保持STDIN 打开-t :分配一个伪终端
bash: 进入容器后执行的命令在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:
runoobrunoob:~$ docker exec -it mynginx /bin/sh /root/runoob.sh
http://www.runoob.com/在容器 mynginx 中开启一个交互模式的终端:
runoobrunoob:~$ docker exec -i -t mynginx /bin/bash
rootb1a0703e41e7:/#
docker rm 删除一个或多个容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]-f :通过 SIGKILL 信号强制删除一个运行中的容器。-l :移除容器间的网络连接而非容器本身。-v :删除与容器关联的卷。
docker run 创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]-i: 以交互模式运行容器通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端通常与 -i 同时使用
-d: 后台运行并返回容器ID-P: 随机端口映射容器内部端口随机映射到主机的端口
-p: 指定端口映射格式为主机(宿主)端口:容器端口
--namenginx-lb: 为容器指定一个名称
docker kill :杀掉一个运行中的容器。
docker kill [OPTIONS] CONTAINER [CONTAINER...]-s :向容器发送一个信号杀掉运行中的容器mynginxrunoobrunoob:~$ docker kill -s KILL mynginx
mynginx
运行与暂停之间切换的两条
docker pause 容器名或IDdocker unpause 容器名或ID
运行与停止之间切换
docker start 容器名或IDdocker restart 容器名或IDdocker stop 容器名或ID 容器操作命令
docker ps : 列出容器
docker ps [OPTIONS]-a :显示所有的容器包括未运行的。-f :根据条件过滤显示的内容。--format :指定返回值的模板文件。-l :显示最近创建的容器。-n :列出最近创建的n个容器。--no-trunc :不截断输出。-q :静默模式只显示容器编号。-s :显示总的文件大小。
docker inspect : 获取容器/镜像的元数据。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]-f :指定返回值的模板文件。-s :显示总的文件大小。--type :为指定类型返回JSON。
docker top :查看容器中运行的进程信息支持 ps 命令参数。
docker top [OPTIONS] CONTAINER [ps OPTIONS]
docker attach :连接到正在运行中的容器。建议不要用这个用docker exec比较好
区别如下:docker exec与docker attach的区别_Christina_2020的博客-CSDN博客
docker attach [OPTIONS] CONTAINER
docker exec -it CONTAINER bash 这个代替--sig-proxyfalse 保证按下ctrlc不会关闭容器
docker logs : 获取容器的日志
docker logs [OPTIONS] CONTAINER-f : 跟踪日志输出--since :显示某个开始时间的所有日志-t : 显示时间戳--tail :仅列出最新N条容器日志
docker export :将文件系统作为一个tar归档文件导出到STDOUT。
docker export [OPTIONS] CONTAINER-o :将输入内容写到文件。docker export -o xxx.tar CONTAINER将容器CONTAINER导出到本地文件xxx.tar中docker export/import与docker save/load的区别export/import会丢弃历史记录和元数据信息仅保存容器当时的快照状态save/load会保存完整记录体积更大docker port 用于列出指定的容器的端口映射
docker port [OPTIONS] CONTAINER
docker stats : 显示容器资源的使用情况包括CPU、内存、网络 I/O 等。
docker stats [OPTIONS] [CONTAINER...]--all , -a :显示所有的容器包括未运行的。--format :指定返回值的模板文件。--no-stream :展示当前状态就直接退出了不再实时更新。--no-trunc :不截断输出。
其他一些命令
docker cp xxx CONTAINER:xxx 或 docker cp CONTAINER:xxx xxx在本地和容器间复制文件
docker rename CONTAINER1 CONTAINER2重命名容器
docker update CONTAINER --memory 500MB修改容器限制
docker数据卷
容器和数据耦合的问题 挂载好数据卷之后就可以在外面修改相关配置文件。 操作数据卷 挂载数据卷 直接用宿主机目录挂载到容器目录 总结 自定义镜像 镜像结构
镜像就是将应用程序及其需要的系统函数库环境配置依赖打包而成。 DockerFile 案例 dockerfile文件命令如下
依赖一个基础的镜像配置了JDK又准备了相对应项目和入口文件然后制作了一个项目镜像。
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \ tar -xf ./jdk8.tar.gz \ mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME$JAVA_DIR/java8
ENV PATH$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
如果是基于一个完成度更高的镜像来搭建比如说一个配置好了jdk的ubuntu镜像那么就可以减少配置的流程。 DockerCompose version是命令的版本这里有多个版本。
docker run \--name mysql \-e MYSQL_ROOT_PASSWORD123 \-p 3306:3306-v tmp/mysgl/data:/var/lib/mysql \-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \-d \
mysql:5.7.25 这个里面将上面这个docker run语句中的必要参数都转换为了docker指令。在微服务集群里面mysql只供给集群内的服务不需要暴露。然后这里默认就是-d后台运行。
构建镜像
docker build -t web:1.0 .
创建容器
docker run --name web -p8090:8090 -d web:1.0
而第二个则是将这两个命令集合里面的 . 就是从当前目录先构建镜像再运行容器。属于临时构建镜像并运行。
实践的视频讲的不行。
docker镜像仓库 docker私人仓库除非是做运维不然没什么必要搭建。
官方搭建是没有UI界面的有人人提供的UI界面。 部署好之后就如下所示