DOCKER 从入门到放弃(三)
使用docker create [image-name] 创建一个容器
创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建后并不会启动,并将容器的ID输出到终端,如果本地没有镜像,将从网络下载镜像。
[root@docker ~]# docker create nginx
63dd9de3c7280959175223c32253623ac0c0ec7680f1051391b62adc126d464f
使用docker run [image-name] 创建一个容器并运行该容器
创建一个nginx镜像的容器,由于没有指定各项参数,容器实用默认参数,创建并启动运行,并将容器的ID输出到终端,如果本地没有镜像,将从网络下载镜像。但是请使用-d 参数,让容器运行在后台,不然该终端将会被占用无法使用。
[root@docker ~]# docker run -d nginx
593d0b66c5b44b2b810076469872d1032376116e2352846aa60a190f7365d914
实用docker ps -a 命令查看当前docker创建的容器,并显示运行状态
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63dd9de3c728 nginx "nginx -g 'daemon ..." 3 minutes ago Created gifted_minsky
启动一个创建好的或者被停止的容器
使用docker start [container id] 启动容器
[root@docker ~]# docker start 63dd9de3c728
63dd9de3c728
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63dd9de3c728 nginx "nginx -g 'daemon ..." 7 minutes ago Up 4 seconds 80/tcp gifted_minsky
停止一个正在运行的容器
使用docker stop [container id] 启动容器
[root@docker ~]# docker stop 63dd9de3c728
63dd9de3c728
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63dd9de3c728 nginx "nginx -g 'daemon ..." 9 minutes ago Exited (0) 4 seconds ago gifted_minsky
使用docker rm 删除一个容器
如果被删除的容器处于运行状态,将无法删除
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63dd9de3c728 nginx "nginx -g 'daemon ..." 11 minutes ago Up 2 seconds 80/tcp gifted_minsky
[root@docker ~]# docker rm 63dd9de3c728
Error response from daemon: You cannot remove a running container 63dd9de3c7280959175223c32253623ac0c0ec7680f1051391b62adc126d464f. Stop the container before attempting removal or force remove
停止要删除后的容器然后在删除容器
[root@docker ~]# docker stop 63dd9de3c728
63dd9de3c728
[root@docker ~]# docker rm 63dd9de3c728
63dd9de3c728
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
创建容器的参数
OPTIONS | 说明 |
---|---|
-a stdin | 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 |
-d | 后台运行容器,并返回容器ID |
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
--name="nginx-lb" | 为容器指定一个名称 |
--dns 8.8.8.8 | 指定容器使用的DNS服务器,默认和宿主一致 |
--dns-search example.com | 指定容器DNS搜索域名,默认和宿主一致 |
-h "mars" | 指定容器的hostname |
-e username="ritchie" | 设置环境变量 |
--env-file=[] | 从指定文件读入环境变量 |
--cpuset="0-2" or --cpuset="0,1,2" | 绑定容器到指定CPU运行 |
-m | 设置容器使用内存最大值 |
--net="bridge" | 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型 |
--link=[] | 添加链接到另一个容器 |
--expose=[] | 开放一个端口或一组端口 |
-it
-it 参数一般连用,在docker run 启动一个容器后提供一个容器的终端,如果容器中没开启shell进程,也无法对容器进行交互
[root@docker ~]# docker run -it centos
[root@a8c4541d52fc /]#
退出容器请使用CTRL + D ;CTRL + C 只会发送给容器的shell,不会退出容器
--name="container name"
--name 将会为容器指定一个名称,没有这个参数,容器的名称将由系统分配
[root@docker ~]# docker create --name="centos-1" centos
eb96e184b3840979de8c9e66adda190c8465fc73dfae65418d8bc0c9c62f491c
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb96e184b384 centos "/bin/bash" 25 seconds ago Created centos-1
-p
-p 参数将一个docker主机的端口映射到容器中,有如下几种格式:
ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | [range hostPort]:containerPort |[range hostPort]:[range containerPort]
[root@docker ~]# docker run -it -d -p 192.168.0.141:10000:80 --name=c-1 centos
37a154d52dc218499e535e2264753006dc29e40e7d33f35be420d38b3bfb4847
[root@docker ~]# docker run -it -d -p 192.168.0.141::80 --name=n-1 centos
1acf8de94a8e485a19be3e5be0735f4e88807cee8c0f466d18eb1bf2c633ab44
[root@docker ~]# docker run -it -d -p 10001:80 --name=a-1 centos
bbb33f76794dd059a96872c1ff2add28719df15b326fb87864284d10d5e9d470
[root@docker ~]# docker run -it -d -p 10010-10020:80-90 --name=q-1 centos
3877df081cea0903ba91910bf4ee5150cac55d337435f66075c237956350bd42
[root@docker ~]# docker run -it -d -p 10030-10040:80 --name=w-1 centos
8296c4196bfaae55d7d7ec145086bf31b257aea733567501a61d57dcd553a320
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8296c4196bfa centos "/bin/bash" 3 seconds ago Up 2 seconds 0.0.0.0:10031->80/tcp w-1
3877df081cea centos "/bin/bash" 11 seconds ago Up 10 seconds 0.0.0.0:10010->80/tcp, 0.0.0.0:10011->81/tcp, 0.0.0.0:10012->82/tcp, 0.0.0.0:10013->83/tcp, 0.0.0.0:10014->84/tcp, 0.0.0.0:10015->85/tcp, 0.0.0.0:10016->86/tcp, 0.0.0.0:10017->87/tcp, 0.0.0.0:10018->88/tcp, 0.0.0.0:10019->89/tcp, 0.0.0.0:10020->90/tcp q-1
bbb33f76794d centos "/bin/bash" 19 seconds ago Up 18 seconds 0.0.0.0:10001->80/tcp a-1
1acf8de94a8e centos "/bin/bash" 27 seconds ago Up 26 seconds 192.168.0.141:32769->80/tcp n-1
37a154d52dc2 centos "/bin/bash" 39 seconds ago Up 39 seconds 192.168.0.141:10000->80/tcp c-1
-v 挂载数据卷
将本地文件/root/pan1/pan.txt 挂载到容器/etc/resolv.conf
[root@docker ~]# docker run -d --name web-1 -v /root/pan1/pan.txt:/etc/resolv.conf nginx
d01e19d1c6284a7a5dfc344c7f4ee27da5c099d7ebd95048efea3e6c7b038d55
将本地目录/root/pan1挂载到容器/etc/pan1 下
[root@docker ~]# docker run -d --name web-2 -v /root/pan1:/etc/pan1 nginx
52a1a7df2964e62a11cf53778e3d461e21090857b03d277db36509c94b3be660
创建一个数据卷,数据卷不会随着容器被删除而被删除
[root@docker ~]# docker create -v /shiyanloudata --name shiyan -it centos
46fa93471dda1814781ba57727e12e7678ca243b281ed928b64752ab6b2f6031
[root@docker ~]# docker volume ls
DRIVER VOLUME NAME
local f8bb990062eebe25d7fdfaa76db5130d89ebacd50a18e25992e83e97ba862123
数据卷可以被多个容器共享,容器挂载其他容器的数据卷
[root@docker ~]# docker run --volumes-from shiyan --name web12345 -d nginx
8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103
查看容器的信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
[root@docker ~]# docker inspect web12345
[
{
"Id": "8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103",
"Created": "2017-07-05T15:53:39.588794033Z",
"Path": "nginx",
"Args": [
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 11693,
"ExitCode": 0,
"Error": "",
"StartedAt": "2017-07-05T15:53:39.755359815Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:c246cd3dd41d35f9deda43609cdeaa9aaf04d3658f9c5e38aad25c4ea5efee10",
"ResolvConfPath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/hostname",
"HostsPath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/hosts",
"LogPath": "/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103-json.log",
"Name": "/web12345",
"RestartCount": 0,
"Driver": "overlay",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": [
"shiyan"
],
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": -1,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay/ff7668f4f80e6c01e2d669be8303b33191da439384e3212eb4c6dde337897e5d/root",
"MergedDir": "/var/lib/docker/overlay/f37762cd46028d515d9076e386f725a0d28ced80f16b7fc6983b7e7bcf57d85c/merged",
"UpperDir": "/var/lib/docker/overlay/f37762cd46028d515d9076e386f725a0d28ced80f16b7fc6983b7e7bcf57d85c/upper",
"WorkDir": "/var/lib/docker/overlay/f37762cd46028d515d9076e386f725a0d28ced80f16b7fc6983b7e7bcf57d85c/work"
},
"Name": "overlay"
},
"Mounts": [
{
"Name": "07a47233da2320118f5fd04621bede68f178b460bf045c72b602c0f58881620e",
"Source": "/var/lib/docker/volumes/07a47233da2320118f5fd04621bede68f178b460bf045c72b602c0f58881620e/_data",
"Destination": "/shiyan",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "8b6cb7beed18",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.13.1-1~stretch",
"NJS_VERSION=1.13.1.0.1.10-1~stretch"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"ArgsEscaped": true,
"Image": "nginx",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {},
"StopSignal": "SIGTERM"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "9f43f43c72567aaad066ba824cf33a5349c95a5f99b5c771c558fedcdbe396f4",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": null
},
"SandboxKey": "/var/run/docker/netns/9f43f43c7256",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "1c1efb2dc8b892d45dbb5a45ca1a1b7477f61fc76c7ed58f3fc71207e36fef2d",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.9",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:09",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "6536d99d4f08428535db0de618aa15b0ee2663c50b197ec4dca77b9a1210f9e4",
"EndpointID": "1c1efb2dc8b892d45dbb5a45ca1a1b7477f61fc76c7ed58f3fc71207e36fef2d",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.9",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:09"
}
}
}
}
]
查看指定的信息使用-f参数:
[root@docker ~]# docker inspect -f {{.LogPath}} web12345
/var/lib/docker/containers/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103/8b6cb7beed18e2070fea14b00db89c7b1b7491ed40f1850cef9e5e83c9859103-json.log
[root@docker ~]# docker inspect -f {{.Config.Image}} web12345
nginx
参考资料:https://docs.docker.com/engine/reference/commandline/inspect/#examples
参考文档
https://docs.docker.com/engine/reference/run
https://docs.docker.com/engine/reference/commandline/create/
DOCKER 从入门到放弃(三)的更多相关文章
- Kafka从入门到放弃(三) —— 详说生产者
上一篇对Kafka做了简单介绍,还没看的朋友可以点击下方链接. Kafka从入门到放弃(一) -- 初识别Kafka 消息中间件必须与生产者和消费者一起存在才有意义,这次先来聊聊Kafka的生产者. ...
- hive从入门到放弃(三)——DML数据操作
上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...
- Docker 从入门到放弃(三)镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...
- Docker 从入门到放弃(二)容器使用
Docker 容器使用 一.Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. root@iZ235mi4a64Z ...
- DOCKER 从入门到放弃(一)
前言 关于docker的各种概念已有各位大神珠玉在前,请各位自行查看,本系列的目的是各种详细操作步骤 各种概念特别推荐CloudMan的3篇blog: http://www.cnblogs.com/C ...
- DOCKER 从入门到放弃(二)
搜索镜像 从docker官方镜像仓库搜索镜像 docker search [OPTIONS] TERM OPTIONS: --automated :只显示自动创建的镜像,默认值为fasle --fil ...
- Docker 从入门到放弃(四)Docker+Jenkins_自动化持续集成
Windows 查看密码 $ cat /var/jenkins_home/secrets/initialAdminPassword 14e14c414f41481aa5955753d3f31f9f 自 ...
- Docker 从入门到放弃(一)安装
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任 ...
- docker的入门到放弃--docker基本命令
docker的镜像中国:https://www.docker-cn.com/registry-mirror 1.搜索镜像 [root@localhost ~]# docker search tomca ...
随机推荐
- 我和 flow.ci 的第一次亲密接触
编者按:本文转载自 flow.ci 用户 @君赏 的实践分享,原文链接这里. 这不是第一次听说 flow.ci ,记得当时 fir.im 新出这个服务的时候,我也是心情十分激动的去尝试,结果是只支持安 ...
- Java ClassLoader 原理分析
一.ClassLoader(类加载器)的作用 如果一个程序包含不止一个class文件,那么当程序启动时,带有main方法的类的class文件作为程序入口先被JVM加载,然后根据程序调用的需要,再逐步进 ...
- OAuth 2.0 / RCF6749 协议解读
OAuth是第三方应用授权的开放标准,目前版本是2.0版,以下将要介绍的内容和概念主要来源于该版本.恐篇幅太长,OAuth 的诞生背景就不在这里赘述了,可参考 RFC 6749 . 四种角色定义: R ...
- jquery deferred done then区别
jquery deferred done then区别 deferred是jquery 对promise的实现. 以下内容基于jquery 1.8及以上版本 deferred具有then done等属 ...
- HTML5笔记3——Web Storage和本地数据库
上一篇:HTML5笔记2——HTML5音/视频标签详解 Web Storage概述 在HTML5中,除了Canvas元素之外,另一个新增的非常重要的功能是可以再客户端本地保存数据的Web Storag ...
- 【Python3之常用模块】
一.time 1.三种表达方式 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.命令如下 ...
- Python成长之路 — 字典
一.字典的定义与创建 字典是Python中唯一内建的映射类型.你可以将其想象成书本的目录,章节名称代表"key",页码则代表"value".书本的目录本质上是也 ...
- Chrome 开发者工具断点调试(视频教程)
很多人不了解 Chrome Dev Tools (开发者工具)的使用方法和技巧. 其中很多技能,无论是前端开发从业者,还是普通用户,了解一些还是对日常很有帮助的. 本猿定期录制.甚至根据您的需求来订制 ...
- [codeforces113D]Museum
D. Museum time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input ...
- ionic2 跳转子页面隐藏底部导航栏
第一种方法: 在tab里面添加一个属性[tabsHideOnSubPages]='true' <ion-tab [root]="tab1Root" [tabsHideOnSu ...