[不花钱站长]:从免费域名开始[0元] Oracle永久免费VPS[0元] VPS环境搭建免费脚本[0元] 秒变大盘挂载免费网盘[0元] 小白免费采集器1天500W[0元] CF免费DNS+CDN服务[0元]
[零基础网赚]:撸本站免费源码[0元] 网站强引免费蜘蛛法[0元] 图片视频文件免费存储[0元] 外链轻松发布免费友链[0元] 入坑免费教程学习源代码[0元] 网上百种+赚钱联盟推荐[?元]

↑↑VPS推荐网 WWW.VPS.COM.IN 稳定 便宜 免备案↑↑


您现在的位置是:首页 > 全球[VPS测评] >  linux,国外免费VPS,国外永久免费VPS

Docker 实践 部分操作命令

全球[VPS测评]来源:VPS推荐网点击:1053
【性价之王】【线路之王】【价格之王】【配置之王】
【免费之王】【香港首推】【梯子之王】【独服之王】
Docker 实践 部分操作命令Docker是什么

镜像,容器,仓库。

docker与System的关系 

容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。

虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。因此容器的隔离级别会稍低一些。

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

获取镜像
$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
#docker pull --help 查看更多
#docker COMMAND --help 命令帮助
#列出本地镜像
docker images
#搜索镜像
docker search mysql
#例如docker pull badapple9/speedtest-x,拉取speedtest-x项目,用户名badapple9/软件名#speedtest-x,此处表示默认地址是 Docker #Hub(docker.io)
#仓库名若不给出,则表示官方镜像
如docker pull ubuntu:18.04
没有给出地址,默认docker hub,没有给出仓库名,实际地址docker.io/library/ubuntu:18.04
运行容器(进入)
#ubuntu18为例
docker run -it --rm ubuntu:18.04 bash

-i: 交互式操作
-t: 终端
–rm: 容器退出后删除
ubuntu: 18.04:基础镜像
bash: 交互式命令

docker run [可选参数] image

–name=”名字” 指定容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
(
-p ip:主机端口:容器端口 配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P 随机指定端口(大写的P)

列出下载镜像

需要明白镜像和容器的关系:

镜像是静态的定义,容器是镜像运行的实体,容器实际上是在镜像的上面加了一层读写层,在运行的容器里做任何改动都是写入到读写层。删除容器之后,等于删除读写层,对文件的改动也会丢失。

#列出顶层镜像
docker image ls
#列出活动容器
docker ps
#列出所有容器
docker ps -a
#更多命令
docker ps --help

docker容器大小可能会比实际镜像大小大,镜像是压缩存储在仓库中,而实际使用时需要展开。
由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于 Docker 使用 Union FS,联合文件系统是docker镜像的基础,镜像可以通过分层来继承,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。

docker中间层

相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份,无论如何你也会需要它们。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。

删除镜像

docker image rm [OPTIONS] IMAGE ID [IMAGE…](docker rmi -f 镜像id)

IMAGE ID 通常取ID前三个字符(人工删除的情况下)

[OPTIONS]可选 -f 强制移除

构建简单web容器
-d 后台运行, -p 端口映射 宿主机端口:容器端口 ,nginx 作为基础镜像,--name 自定义名字
docker run --name webserver -d -p 80:80 nginx
Docker容器与宿主机直接文件拷贝
#拷贝容器的文件到主机中
docker cp 容器id:容器内路径 目的主机路径
#拷贝宿主机的文件到容器中
docker cp 目的主机路径 容器id:容器内路径
docker cp containerid:/opt/testnew/file.txt /opt/test/
docekr cp /opt/test containerid:/opt/testnew/file.txt
#容器是否启动均会拷贝,且相同文件会替代
进入容器
#进入容器,修改存储层
docker exec -it webserver bash
#例如修改默认的index.html
MySQL的部署

下载并运行

#拉取并运行容器
docker run -d --name mysql-5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
#参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 默认账号root 用户的密码。

进入容器查看mysql服务 进入容器,并通过账号root查看MySQL服务能否正常连接

docker exec -it 9b3aad6819ff /bin/bashell
mysql -h localhost -u root -p
镜像构成/容器打包成镜像

镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础上加一层作为容器运行时的存储层。利用nginx作为基础容器,构建webserver

运行一个容器,并对容器内容做修改,而不使用挂载文件夹(卷),对其内部任何的修改都将保存在存储层,如果想将修改之后的容器保存成镜像,方便在其他设备使用,docker中提供docker commit 命令

docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
#举例 \换行符 webserver 容器名 仓库nginx 标签 v2
docker commit \
--author "MAOBUNI <admin@maobuni.com>" \
--message "alter default index html" \
webserver \
nginx:v2

使用docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为 黑箱镜像,除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知。而且,即使是这个制作镜像的人,过一段时间后也无法记清具体的操作。黑箱镜像难以维护,并且docker的是分层存储,修改仅仅影响当前层,层层累计,镜像臃肿。考虑使用Dockerfile 构建镜像。

Dockerfile
#创建文件Dockerfile
touch Dockerfile
#编辑
vim Dockerfile
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
#Dockerfile所在目录执行
#docker build [OPTIONS] PATH | URL | -
#RUN命令会构建一个容器来执行命令,随后得到一个新的镜像并删除原执行容器
docker bulid -t nginx:v1 .

FROM:
指定基础镜像(FROM scratch 空白镜像,不以任何镜像为基础镜像,服务类镜像nginx, redis等,语言类镜像python,golang等,基础操作系统镜像centos,alpine等)

RUN:
shell格式的run:RUN [命令](例如 RUN echo ‘hello’ >> /usr/share/nginx/html/index.html)
exec格式:RUN [“可执行文件”, “参数1”, “参数2”]

Docker每个RUN指令都会构建一层,将复杂的shell脚本表现为多个RUN命令,导致镜像臃肿 ,且容易出错。(Union FS 是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层。)

例:以debian为基础镜像,安装redis,构建新的镜像,多个RUN命令

FROM debian:stretch
RUN apt-get update
RUN apt-get install -y gcc libc6-dev make wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN mkdir -p /usr/src/redis
RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
RUN make -C /usr/src/redis
RUN make -C /usr/src/redis install

Dockerfile正确写法

FROM debian:stretch
RUN set -x; buildDeps='gcc libc6-dev make wget' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps

撰写 Dockerfile 的时候,要经常提醒自己,这并不是在写 Shell 脚本,而是在定义每一层该如何构建。(Dockerfile文件名仅是默认习惯,且位置默认放在上下文目录中)

其他构建镜像方法

docker build 其他用法

git repo构建

docker build -t name:tag URL

tar压缩包构建

docker build http://server/context.tar.gz
Docker 引擎会下载这个包,并自动解压缩,以其作为上下文,开始构建。

标准输入读取Dockerfile构建

docker build - < Dockerfilecat Dockerfile | docker build -
没有上下文,因此不可以像其他方法那样可以将本地文件 COPY 进镜像之类的事情。

Dockerfile指令详解

。。。

操作容器

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

检查本地是否存在指定的镜像,不存在就从 registry 下载利用镜像创建并启动一个容器分配一个文件系统,并在只读的镜像层外面挂载一层可读写层从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去从地址池配置一个 ip 地址给容器执行用户指定的应用程序执行完毕后容器被终止再次启动命令 docker container start

查看容器中运行的进程

进入容器之后,可以使用ps或top命令,即可以观察到docker的轻便。

守护态/后台运行:docekr run -d

查看容器日志:docker container logs [container ID or NAMES]

终止容器:docker container stop

重启一个容器:docker container restart

进入容器

docker attach 和 docker exec 命令

exec命令

docker exec 后常 用 -i 和-t 命令

-i并没分配伪终端,操作结果返回在宿主机

#例子
docker exec -it container ID bash
ls
index.html result.html ...
#退出不会导致容器停止运行
exit

attach命令

docker run -itd -p 9001:80 badapple9/speedtest-x
#attach
docekr attach container ID
#进入容器执行命令
#退出 会导致容器停止运行
exit
容器快照导出/导入

docker export container ID > filename.tar

cat filename.tar | docker import - test/ubuntu:v1.0

(容器快照体积更小,仅记录容器状态,丢弃原始标签等数据)

删除容器

删除处于停止状态的容器:docker container rm name

清理所有处于停止状态的容器:docker container prune


[linux]历史优惠活动内容
  • linux主机路由回程测试工具besttrace,支持显示as号和地区
  • racknerd纽约机房Ryzen Linux VPS Specials主机全面评测,高性能
  • racknerd怎么样?美国芝加哥机房高性能便宜主机 Ryzen Linux VPS 全面测
  • VPS主机linux系统 一键 dd 安装windows
  • 推荐linux服务器上的病毒查杀 安全防护工具,如ClamAV、CXS、Lynis等
  • linux主机路由回程测试工具besttrace,支持显示as号和地区
  • racknerd纽约机房Ryzen Linux VPS Specials主机全面评测,高性能
  • racknerd怎么样?美国芝加哥机房高性能便宜主机 Ryzen Linux VPS 全面测
  • ixwebhosting虚拟主机大促销(windows/linux任选)
  • 推荐→crystone美国无限主机0.99美元/月(windows和linux可选)
  • centralhosts-2.5折XEN(linux+windows)/1000M端口/10
  • Godaddy-Deluxe主机3.6折优惠码/支付宝/windows/linux
  • atlantic-真正的VPS云-最低256M内存/5美元/月/linux+windows
  • atlantic-真正的VPS云-最低256M内存/5美元/月/linux+windows
  • vmware提供3个月VPS云[2g内存,windows/linux可选]
  • vmware提供3个月VPS云[2g内存,windows/linux可选]
  • 推荐:arvixe-1美元/月-Windows/Linux主机
  • 推荐:directspace-新货KVM/SSD/Windows/Linux
  • XiNiX-SSD硬盘/windows主机年付$9.9/Linux主机年付$5.99
  • XiNiX-SSD硬盘/windows主机年付$9.9/Linux主机年付$5.99
  • 推荐:domain.com-虚拟主机5折/windows/Linux
  • yardvps-全场5折/windows/Linux/支持Alipay
  • 消息→6折购买Linode/第十三届南加州Linux展会
  • weloveservers-5折/windows VPS/7折linux KVM/48小时内
  • Linux环境下部署Object S”不可描述”age
  • hostwithlinux-香港/softlayer/1000M端口/$2/256m内存/2
  • hostwithlinux-linux+windows/KVM简单测评/香港/softlay
  • hostwithlinux-$5/月/全新VPS,KVM虚拟,softlayer香港机房【可
  • VPS控制面板→宝塔Linux面板介绍及安装
  • VPS控制面板→宝塔Linux面板介绍及安装
  • VPS新手教程→SFTP Linux VPS的“FTP”
  • VPS新手教程→50个常用的Linux命令 带实例
  • VPS新手教程-重启Linux系统(centos/debian/ubuntu)
  • 给host1plus家10G端口的Linux VPS安装Windows系统
  • Linux下挂载硬盘的简单教程
  • Linux系统硬盘满了怎么办?
  • Linux新手VPS服务器教程 零基础开始进入服务器世界
  • Linux下挂载磁盘教程
  • #站群服务器# raksmart-159美元/258个IPv4/windows或Linux/
  • #推荐# host1plus – 10Gbps带宽云服务器/新年8折优惠码/Windows/
  • #推荐# hostdare – 三网直连VPS/cn2 gia/Linux+Windows+
  • hostkvm→香港VPS 80Mbps带宽 三网直连 Linux/Windows系统
  • VPS服务器教程→如何在Debian9上安装LEMP套装组件(Linux-nginx-mys
  • virpus→2019/05 Linux和Windows VPS送上3.5折优惠码 性价比超
  • virpus→西雅图自家机房 windows VPS 和 Linux Xen VPS 3折甩
  • virpus→2020年VPS年末4折优惠 西雅图机房的Linux和Windows VPS低
  • ftech→$20/月 越南VPS 1Gbps带宽 不限流量 4G内存/2核/25gSSD
  • 欧亚云→美国cn2 gia网络 200G高防VPS 8折优惠 46元/月起 支持Window
  • pacificrack→2021年秋季促销 $18/年 4G内存/2核/50gSSD/5T流
  • hostkvm→俄罗斯CN2 VPS 5折促销中 低至$4.25/月 支持Windows和L
  • 腾讯云→最后的机会 219元/3年 4G内存/2核/60gSSD/6M带宽 支持Linux和
  • iONcloud→美国云服务器7.5折 圣何塞/洛杉矶 $10/月 2G内存/2核/60gS
  • #618# pacificrack→中国优化线路VPS低至$10/年 2G内存/2核/30g
  • 全球云→高配香港VPS 5机房可选 CN2+BGP网络 45元起 6G内存/2核/60gSS
  • 香港VPS→locvps推出大内存VPS 7折优惠低至66元 6G内存/2核/60GSSD/
  • 全球云→高配香港VPS 5机房可选 CN2+BGP网络 45元起 6G内存/2核/60gSS
  • #618# pacificrack→中国优化线路VPS低至$10/年 2G内存/2核/30g
  • 全球云→高配香港VPS 5机房可选 CN2+BGP网络 45元起 6G内存/2核/60gSS
  • 香港VPS→locvps推出大内存VPS 7折优惠低至66元 6G内存/2核/60GSSD/
  • 全球云→高配香港VPS 5机房可选 CN2+BGP网络 45元起 6G内存/2核/60gSS

  • 猜你可能想看的VPS


    转载请注明原文地址:http://140.238.13.167:12355/read-228674.html

    下一篇       上一篇