Docker入门2------容器container常规操作
Docker的container
- 运行一个container的本身就是开启一个具有独立namespace的进程
- 进程有自己的网络,文件系统等
- docker通过run命令来启动一个container
- 运行一个container必须要指定一个image作为初始化的文件系统
对于不存在的image,docker会自动去registry里面下载对应的image,然后再运行container
- docker正在运行的容器

- 物理机上的进程:

可以看到二者的uuid是相同的
如果image里面包含了CMD的命令,那么在启动container的时候,不需要指定command,否则会使用指定的command来覆盖image中的CMD
- 比如tomcat镜像里面的命令自动是执行
catalina.sh run,启动容器就会自动启动tomcat,如果启动的时候指定了命令就会覆盖原始的,导致tomcat不能启动! - 正常启动
docker run -d -p 8088:8080 tomcat进程如下:
[root@localhost ymsk]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a2a64495275 tomcat "catalina.sh run" 10 minutes ago Up 10 minutes 0.0.0.0:8088->8080/tcp elated_shockley
会自动启动tomcat服务
- 覆盖启动'docker run -p 8088:8080 -t -i tomcat /bin/bash' 进程如下:
[root@localhost ymsk]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
839498ec771b tomcat "/bin/bash" 12 minutes ago Exited (130) 10 minutes ago peaceful_liskov
不会自动启动tomcat服务
前台运行和后台运行:
默认的container是在前台运行的,会绑定command进程的STDIN、STDOUT、STDERR到console上(在console上展现标准输入、输出和标准错误输出)
可以通过-d的选项让container运行在后台
通过attach命令可以重新attach一个后台运行的container(attach可以将后台运行的切换到前台)
在后台运行的情况下,RUN命令会返回一个容器的uuid,唯一标识container
可以通过docker ps来查看container的uuid和运行信息
可以通过指定--name的方式来指定container的名字,name必须唯一
inspect:可以查看container的更多信息
- 通过docker inspect {container_id}来获取container的更多的信息,包括网络,volume,实际在host上的进程id等信息

log
- 通过logs命令可以看到container中command所指向进程的STDOUT,STDERR数据
- 可以进程排错(-d后台运行没有输出到console时,查看)

环境变量:
通过-e参数,可以在运行container的时候添加系统环境变量端口
- 通过-p 8000:80 -p 443:443:映射容器中的多个端口(前面本机host端口,后面container端口)
网络设置:
- 通过--net参数来修改container的网络设置,默认是bridge的方式
- none表示关闭container的网路连接
- host表示使用主机的网络栈,这个时候host主机不会创建veth虚拟网卡映射到container
- container的网络和主机host的网络在同一网段
# docker run -t --net host saltstack/ubuntu-14.04 sh -c "while true;do ifconfig;sleep 2;done"
DNS
- 通过--dns设置
磁盘挂载
- 通过-v指定一个容器内目录,他会映射到物理机磁盘一个目录下,可以在
docker inspect ID里面看到
- 通过-v指定一个容器内目录,他会映射到物理机磁盘一个目录下,可以在
root@webserver:/usr/local/tomcat#
-v: 为container绑定一个数据卷
-i:交互模式,直接进入到container容器中
-t:tty,伪终端
-h wadeson:指定为container设置hostname
-v /data:container内的/data为挂载点
- 查看磁盘映射挂载
docker inspect 9ea82dc78b50
{"Mounts": [
{
"Type": "volume",
"Name": "b7f9ca8cb9da67a88e36724c04d68ed8bea8ab1171a3051bf9c1cf00204ae31a",
"Source": "/var/lib/docker/volumes/b7f9ca8cb9da67a88e36724c04d68ed8bea8ab1171a3051bf9c1cf00204ae31a/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
}
- 磁盘映射:
- 把容器/data目录映射到物理机 /main:/data目录,无论容器还是外部物理机,任意一个地方修改文件,另外一方都是可见的.
[root@localhost main]# docker run -p 8088:8080 -it -v /main:/data -h webserver tomcat /bin/bash
root@webserver:/usr/local/tomcat# cd /data/
root@webserver:/data# ls -l
total 0
drwxr-xr-x. 3 1000 1000 34 Feb 21 06:40 apps
drwxr-xr-x. 3 root root 25 Nov 23 01:59 server
drwxr-xr-x. 2 root root 74 Nov 23 02:00 soft
还有更多操作可以修改网络模式,设置挂载只读等等,用的时候再查吧
Docker入门2------容器container常规操作的更多相关文章
- docker入门_image、container相关命令
docker入门_image.container相关命令 镜像仓库服务.镜像仓库.镜像相关概念 镜像仓库服务:docker镜像仓库服务.阿里云镜像服务 镜像仓库:docker镜像仓库服务中会有很多仓库 ...
- Docker入门之三容器
上一篇博客学习了下镜像,今天来学习容器.容器类似一个手机中的沙盒环境,用来运行app实例.和镜像一样也是对容器的创建.删除.导出等. 由于我买的参考书中的例子好多都是基于linux的,所以我将dock ...
- Docker镜像与容器的常用操作
Docker镜像加速配置:Docker镜像常用操作:Dcoker容器常用操作. 镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加 ...
- docker入门——管理容器
除了交互式的容器(interactive container),我们也可以创建长期运行的容器.守护式容器(daemonized container)没有交互式会话,非常适合运行应用程序和服务.大多数时 ...
- docker镜像、容器以及命令操作
docker image docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7 docker image是 ...
- docker 入门2 - 容器 【翻译】
入门,第 2 部分:容器 先决条件 安装的 Docker 版本是 1.13 及以上. 读完 第一部分 用下面的命令快速测试你的环境是否完备: docker run hello-world 概述 现在开 ...
- Docker 入门:容器
容器看着像机器,实际是进程,是一个运行时程序. 要操作一个 Docker 容器,只需要执行 docker container 命令. 可以通过 help 查看 run 运行容器 基础使用: docke ...
- docker入门(二)容器与镜像的理解
10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...
- docker入门(二)容器与镜像的关系
[编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(co ...
随机推荐
- 魔术方法__get()、__set()和__call()的用法
刚开始学习魔术方法时对__get().__set() 和__call()的用法和作用不是太了解,也有一些误解... 现在分享一下个人的理解,大家共勉一下: __get().__set() 和__cal ...
- 游戏行业DDoS攻击解决方案
行业综述 根据全球游戏和全球移动互联网行业第三方分析机构Newzoo的数据显示:2017年上半年,中国以275亿美元的游戏市场收入超过美国和日本,成为全球榜首. 游戏行业的快速发展.高额的攻击利润.日 ...
- 简单理解PHP-FPM
php-fpm只是一个php-fastcgi的管理器,为php提供管理服务 1.为什么会出现php-fpm fpm的出现全部因为php-fastcgi出现,为了很好的管理php-fastcgi而 ...
- Git忽略规则.gitignore忽略node_modules文件夹
在项目文件夹里添加.gitignore的文件 打开文件,在里面添加 /node_modules
- 10款基于jquery的web前端动画特效
1.jQuery横向手风琴图片切换动画 之前我们为大家分享过很多款基于jQuery和CSS3的手风琴菜单和手风琴焦点图插件,比如CSS3响应式垂直手风琴菜单和jQuery横向手风琴图片展示插件.今天要 ...
- SQL注入学习资料总结
转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html 什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Lang ...
- 阿里java代码检测工具p3c
阿里在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件! 该插件由阿里巴巴P3C项目组研发.这个项目组是阿里巴巴开发爱好者自发组织形成的虚拟项目组,把<阿里巴巴 ...
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project demo: Fatal error com piling: 无效的标记: -parameters
背景:本项目使用JDK1.8 编译maven工程的时候出现如下错误: Failed to execute goal org.apache.maven.plugins:maven-compiler-pl ...
- oneNote2016代码高亮插件
下载地址:https://github.com/elvirbrk/NoteHighlight2016/releases 安装插件前必须安装oneNote笔记. NoteHighlight插件有32位和 ...
- deep learning 以及deep learning 常用模型和方法
首先为什么会有Deep learning,我们得到一个结论就是Deep learning需要多层来获得更抽象的特征表达. 1.Deep learning与Neural Network 深度学习是机器学 ...