台州外贸网站湖南隆回建设局网站

当前位置: 首页 > news >正文

台州外贸网站,湖南隆回建设局网站,全网营销的概念,宁波城乡住房建设厅网站首页文章目录 Docker安装Docker的基础使用搜索拉取镜像 Docker的生命周期利用Docker切换不同OSDocker容器 镜像的保存分享Docker存储Docker网络 Docker安装 更新apt索引 sudo apt-get update添加Docker所需要的依赖 apt-get install ca-certificates curl gnupg lsb-r… 文章目录 Docker安装Docker的基础使用搜索拉取镜像 Docker的生命周期利用Docker切换不同OSDocker容器 镜像的保存分享Docker存储Docker网络 Docker安装 更新apt索引 sudo apt-get update添加Docker所需要的依赖 apt-get install ca-certificates curl gnupg lsb-release添加Docker的GPG秘钥这里我添加的是Tsinghua的 curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg |apt-key add -添加Docker的软件源到apt中并且更新 sudo add-apt-repository deb [archamd64] http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable sudo apt-get update安装Docker apt-get install docker-ce docker-ce-cli containerd.io修改Daemon添加仓库源 vim /etc/docker/daemon.json 添加如下: {registry-mirrors: [https://dockerproxy.com,https://docker.m.daocloud.io,https://cr.console.aliyun.com,https://ccr.ccs.tencentyun.com,https://hub-mirror.c.163.com,https://mirror.baidubce.com,https://docker.nju.edu.cn,https://docker.mirrors.sjtug.sjtu.edu.cn,https://github.com/ustclug/mirrorrequest,https://registry.docker-cn.com] }载入Daemon并且启动Docker sudo systemctl daemon-reload sudo systemctl restart docker测试是否可以使用 sudo docker run hello-world配置用户组让其余用户也可以使用 sudo usermod -aG docker username newgrp dockerDocker的基础使用 搜索拉取镜像 通过docker search 镜像名可以直接搜索可以匹配到的相关镜像 docker search nginx找到之后就可以把镜像下载下载使用docker pull命令即可 docker pull nginx此时可以通过docker image ls查看当前所拥有的所有镜像。 docker image ls通过ls可以查看到镜像的具体ID通过ID可以移除镜像 docker rmi IDDocker的生命周期 如上图所示 首先Dockerfile用户构建一个Image然后这个Image和容器之间可以通过run和commit进行运行和提交。Images可以添加tag管理版本容器自身可以通过各种操作管理状态。最后就是Images与备份和Docker仓库之间的拉取和上传操作。 利用Docker切换不同OS Docker的本质上是通过构建不同的容器来隔离环境从而做到在一个操作系统上运行多种需求的技术。这里Docker的每个容器并不是一个OS不具备一个OS所需要的所有部件。因此Docker比虚拟机要节省资源。 举例来说Docker可以在一个Linux服务器上部署多种发行版。在实际操作中并不是把这些发行版全部下载了只是下载了其软件包的部分他们共用宿主主机的内核。因此大大节省了资源开销。 举个例子拉取Centos和ubuntu镜像 docker pull centos:7.8.9.2003通过-it以交互式进入到镜像中并且开启一个新的terminal docker run -it your_centos_id bash其中bash指定了我们使用bash作为shell进入后通过cat /etc/redhat-release就可以查看当前系统已经备切换到了centos中 cat /etc/redhat-release通过exit就可以退出容器环境。从这里也可以了解到了Docker的原理本质上类似于Python的虚拟环境这样的技术而不是虚拟操作系统。 Docker容器 接下来开始使用Docker的容器以Nginx为例子。 首先通过docker run指令就可以启动一个容器 docker run -d -p 80:80 nginx其中80:80指的是从容器内的80端口映射到容器外宿主机的80端口是-p的参数-d是后台运行。后面可以使用nginx这个名称直接指定镜像也可以使用期内部的镜像ID制定。 docker run还有如下的参数 –rm: 容器停止后自动删除容器-it: 交互式运行容器分配一个伪终端–env 或 -e: 设置环境变量–restart: 容器的重启策略–name: 给容器指定一个名称 使用上述的指令后nginx就运行在了docker容器并且在后台运行。通过ps指令可以查看当前的状态 docker ps这个时候通过80端口就可以访问到nginx了。如果此时你想要进入到Docker的容器的后台查看具体的情况也就是从后台切到前台可以使用exec指令 docker exec -it c15692f358e6 bash此时你就可以进入到这个正在运行的容器内部进行操作。exec还有很多其他的参数主要用于给正在运行的容器执行一个新的命令全部的表述为 docker exec [OPTIONS] CONTAINER COMMAND [ARG…]参数有 -d, –detach: 在后台运行命令。-e, –env: 设置环境变量。–env-file: 从文件中读取环境变量。-i, –interactive: 保持标准输入打开。–privileged: 给这个命令额外的权限。–user, -u: 以指定用户的身份运行命令。-t, –tty: 分配一个伪终端。 这里涉及到Docker Image的原理如图所示一个Docker的Image是包含了很多的层其中包含了可以写入的部分和不可写的部分。从下到上依次是各式各样的依赖最后一层是可写层也就是我们进入后台后所到的位置。在这里我们可以进行一些操作也叫容器层。 Docker这样对镜像进行分层有很多好处例如可以多个容器共享同一个底层镜像。节省资源而需要进行修改时Docker又会自动的对其进行复制。 所有的容器的修改都只发生在容器层所有的底层Image都不会被修改或者删除更像是软删除软修改这样的操作。 随后介绍docker剩下的所有容器指令 docker stop用于停止一个镜像 docker stop c15692f358e6此时就停止了原本的nginx所在的容器此时使用docker ps是看不到任何的容器的但是并不意味着容器被销毁了其实没有的。使用docker ps -a即可查看所有的容器 docker ps -a返现原本的nginx还是有的只不过是处于exited状态。如果你想恢复容器使用那么就是用docker start指令 docker start c15692f358e6同理你还可以使用restart指令进行重启效果类似于stop start。 如果当然容器运行时会发生很多的错误你可以使用docker logs来进行查看日志debug docker logs c15692f358e6最后如果你不想要一个容器你可以通过rm指令直接删除 docker rm c15692f358e6类似Linux的rm你可以通过添加-f强制删除即使是在运行的容器 docker rm -f c15692f358e6镜像的保存分享 docker允许我们把自己本地的容器内的镜像进行打包然后发送给其他人。类似于git。我们可以使用commitsave和load来完成这些工作。 首先使用docker commit命令可以把镜像进行打包 docker commit -a Zipper -m Test Image -p c15692f358e6 mynginx:v1.0其中各个参数如下 -a 指定作者-m 详细信息-p 在commit时暂停运行镜像 其中保存的最后的两个参数为 容器名 镜像名称此时就生成了一个Mynginx:v1.0镜像。此时你使用 docker image ls指令就可以发现多了一个mynginx包 随后可以使用save指令把镜像打包为一个tar包 docker save -o mynginx.tar Mynginx:v1.0类似的你可以使用load指令把一个镜像压缩包导入到docker中 docker load -i ./mynginx.tarDocker存储 Docker内的许多数据修改起来十分的困难因为这些容器内可能连vim这类的基础命令都不存在。假如我们希望容器内能对外部的数据进行读取和写入此时我们又不可能把数据全部迁移容器内此时就会很麻烦。 所以我们必须要能在外部的宿主系统上对一些容器内的数据进行修改操作以方便我们在外部进行一些操作。于是Docker提供了目录挂载功能方便我们把宿主机的容器挂载到容器中让容器对其进行操作。 我们可以在docker启动的时候添加一个-v参数使其把宿主机目录挂载到容器目录内 docker run -d -p 80:80 -v /app/html:/usr/share/nginx/html nginx 如上所示我们就完成了一个挂载。 有时在初始化一个容器时容器内的某个目录下有一些东西这些外部的宿主机目录是没有的如果强行挂载会导致挂载失败容器直接无法启动。这是因为容器外的挂挂载目录缺少这些初始配置而容器启动又依赖于这些初始配置。 所以此时我们就需要使用卷映射他会在初始化时在宿主机的固定一个目录下初始化一个卷把docker容器内的内容复制过来并且建立映射。卷映射使用-v但是不再以/作为开头而是只有一个卷名 docker run -d -p 80:80 -v nginxvol:/usr/share/nginx/ nginx 此时你就会在/var/lib/docker/volumes下找到一个叫做nginxvol这个就是映射的内容。 Docker网络 有时候我们可能部署多个容器容器内的服务可能需要互相通信例如前端和后端这就需要配置容器之间的网络。docker每启动一个容器都会为容器分配一个唯一的ip我们可以使用这个ip直接跨容器通信。 使用ifconfig即可查看 ifconfig但是直接使用ip会导致访问出现问题例如在迁移时可能会导致ip变化。最保险的做法是通过域名来访问。我们可以使用docker network来创建docker网络 docker network create mynet而在容器启动时可以使用docker run添加–network参数来选择我们使用的网络。当多个容器加入到同一个网络时他们就可以互相的通信访问直接使用容器名替代原本的ip进行访问。