Always keep a be|

wtdata

园龄:2年4个月粉丝:3关注:1

三.docker进阶命令

三、docker进阶命令

3.1 docker run

docker run :创建一个新的容器并运行。

选项:

-d: 后台运行容器,并返回容器ID; 
-i: 以交互模式运行容器,通常与 -t 同时使用; 
-P: 随机端口映射,容器内部端口随机映射到主机的端口 
-p:指定端口映射,格式为:主机(宿主)端口:容器端口 
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 
--name="nginx-lb":为容器指定一个名称;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型; 
--volume , -v: 绑定一个卷。一般格式 主机文件或文件夹:虚拟机文件或文件夹。
-v 在存储详写,--net:在网络时候详写。

使用docker镜像nginx以后台运行模式启动一个容器,并且重命名为nginx01

docker run -d --name  nginx01 nginx 

使用docker镜像nginx以后台运行模式启动一个容器,并且重命名为nginx01 并且进入到容器

docker run -d --name  nginx01 nginx /bin/bash

使用镜像nginx以交互模式且后台启动一个容器.(常用)

docker run -dit --name nginx01 nginx 

使用镜像nginx以交互模式且后台启动一个容器并映射端口.(常用)

docker run -dit --name  nginx01 -p 80:80 nginx 
-p选项:主机(宿主)端口:容器端口 。
docker run -dit --name  nginx01 -P 80:80 nginx 
-P 随机端口。
外部网络访问容器:外部网络访问容器指的是在IP可达之后,容器提供对外服务,外部通过IP网络访问该服务,如容器提供一个Nginx服务,外部通过IP访问到该服务。在对外服务中,需要将服务端口暴露隐射至主机端口,主要包含以下几个步骤:
1)容器中提供对外服务,对外暴露服务端口xxx,如8090
2)启动容器时将主机端口8091绑定到容器端口8090,docker run -p 8091:8090 [其他参数]
浅析如何为正在运行的容器添加端口映射 :https://www.cnblogs.com/goloving/p/15133961.html   最好选第三种,不会有什么错误。
3)docker-proxy进程会监听主机端口8091
4)当外部访问到主机的8091端口时,主机转发至容器8090端口
5)容器对外服务端口接收到流量后服务程序开始处理

使用镜像 nginx以交互和后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -dit --name  nginx01 -p 80:80 -v /data:/data nginx 

当利用docker run来创建容器时候,Docker在后台运行的标准操作包括:
(1)检查本地是否存在指定的镜像,不存在就从远程仓库下载。

(2)利用镜像创建并启动一个容器。

(3)分配一个文件系统,井在只读的镜像层外面挂载一层可读可写层

(4)从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去

(5)从网桥的地址池配置一个IP地址给容器

(6)执行用户指定的应用程序

(7)执行完毕后容器被终止

常用选项说明
-d, --detach=false, 指定容器运行于前台还是后台,默认为false
-i, --interactive=false, 打开STDIN,用于控制台交互
-t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false
-u, --user="", 指定容器的用户
-a, --attach=[], 登录容器(必须是以docker run -d启动的容器)
-w, --workdir="", 指定容器的工作目录
-c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用
-e, --env=[], 指定环境变量,容器中可以使用该环境变量
-m, --memory="", 指定容器的内存上限
-P, --publish-all=false, 指定容器暴露的端口
-p, --publish=[], 指定容器暴露的端口
-h, --hostname="", 指定容器的主机名
-v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[], 给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[], 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[], 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile="", 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset="", 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[], 添加主机设备给容器,相当于设备直通
--dns=[], 指定容器的dns服务器
--dns-search=[], 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint="", 覆盖image的入口点
--env-file=[], 指定环境变量文件,文件格式为每行一个环境变量
--expose=[], 指定容器暴露的端口,即修改镜像的暴露端口
--link=[], 指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[], 指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name="", 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--net="bridge", 容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似--net=bridge),但是不进行配置
--privileged=false, 指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="no", 指定容器停止后的重启策略:
--restart=always参数能够使我们在重启docker时,自动启动相关容器。
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--rm=false, 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--sig-proxy=true, 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

docker run -it 和docker -dit的区别:
docker run -it 会直接进如到容器里,但是退出的时候使用exit容器就会停止运行,使用ctrl+p+q不会。

使用docker run -dit 使用exec进入容器使用exit不会退出容器。

docker run 网络:

使用docker run 创建docker 容器时,可以用--net 或--network 选项指定容器的网络模式

host模式:使用--net=host 指定

none模式:使用--net=none 指定

container模式:使用--net=container:NAME__or_ID 指定

bridge模式:使用--net=bridge 指定,默认设置,可省略

3.2 docker inspect

docker inspect:获取容器/镜像的元数据。

查看centos镜像的所有元数据

docker inspect  centos:7

查看运行中容器的所有元数据

docker inspect  centos001/容器ID

获取正在运行的容器centos001的 IP

docker inspect -f='{{.NetworkSettings.Networks.bridge.IPAddress}}' centos001
一个容器可以连接到多个网络,而不是打印这些多个 IP 地址之一,您可以使用此命令打印所有这些 IP 地址:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' centos001

查看cnetos001目录挂载信息

docker inspect --format="{{json .Mounts}}"  centos001
以下命令以这种格式打印绑定安装,“[source] -> [destination], 模式: [mode]”:
docker container inspect -f '{{range .Mounts}}{{printf "%s -> %s, mode: %sn" .Source .Destination .Mode}}{{end}}' centos001

3.3 docker commit

docker commit :从容器创建一个新的镜像。

选项:

-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停

将容器centos001保存为新的镜像,并添加提交人信息和说明信息。

docker commit -a "runoob.com" -m "my apache" centos001a404c6c174a2  centos7:v1 (保存的镜像名)

3.3 docker cp

docker cp :用于容器与主机之间的数据拷贝。

将docker.txt下的文件复制到centos001下的root下

docker cp C:\Users\72528\Desktop\文件\docker.txt centos001:/root
docker exec -it centos001 bash
PS C:\Users\72528\Desktop> docker exec -it centos001 bash
[root@b8493afa0cad /]# ls /root
anaconda-ks.cfg  docker.txt
[root@b8493afa0cad /]#

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/runoob 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp  96f7f14e99ab:/www /tmp/

3.4 docker save | load

docker save: 将指定镜像保存成 tar 归档文件。

docker load :导入使用 docker save 命令导出的镜像。

将centos:7保存成 centos001.tar

导出镜像:
docker save -o centos7.bak.tar centos:7
导入镜像:
docker load -i my_centos.tar

3.5 docker export | import

docker export:将容器打包。

docker export的应用场景主要用来制作基础镜像,比如你从一个ubuntu镜像启动一个容器,然后安装一些软件和进行一些设置后,使用docker export保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。

docker export  容器别名/容器ID > centos.tar

docker import:将docker导出的镜像文件恢复成为一个镜像。注意:导入后是镜像。

docker import centos7.tar  centos:8

镜像保存/载入:docker load/docker save;将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。
docker save和docker export的区别:

1、docker save 保存的是镜像(image),docker export 保存的是容器(container)。

2.docker load用来载入镜像包,docker import用来载入容器包,但是两者都会恢复为镜像。

3、docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

容器导入/导出:docker import/docker export;将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

本文作者:wtdata123

本文链接:https://www.cnblogs.com/wtdata123/p/16908651.html

版权声明:本作品采用WTdata知识共享署名-许可协议进行许可。

posted @   wtdata  阅读(97)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作词 : Victor Thell/Maria Smith/Darin Zanyar

作曲 : Victor Thell/Maria Smith/Darin Zanyar

Går genom staden tittar i marken

Vill lyfta blicken men ser bara oss två

I alla andra de som ser färger

Lever i nuet men jag lever då

Står här tung som bly

Förstelnad grå staty

Du var så fin

Att du fått allting annat att kännas som en mardröm

Som en mardröm

När du var min

Det var så vackert men nu känns allting som en mardröm

Som en mardröm

Vi var det som lyste mitt i det gråa

Vi va de färger du sa att du aldrig sett

Jag minns det vi hade som ljusa pasteller

Nu suddar du bort det och du tror det är lätt

Försöker springa fram

Kommer ingenstans

Du var så fin

Att du fått allting annat att kännas som en mardröm

Som en mardröm

När du var min

Det var så vackert men nu känns allting som en mardröm

Som en mardröm

Du gav ett hederligt perspektiv

På hur fint livet kunde bli

Jag saknar dig

Du gav ett hederligt perspektiv

På hur fint livet kunde bli

Jag saknar dig

Du var så fin

Att du fått allting annat att kännas som en mardröm

Som en mardröm

När du var min

Det var så vackert men nu känns allting som en mardröm

Som en mardröm

Bara du kan väcka mig

Bara du kan väcka mig

Bara du kan väcka mig ur denna mardröm

Bara du bara du kan väcka mig

Bara du bara du kan väcka mig

Bara du bara du kan väcka mig ur denna mardröm