启动一次性运行的容器
入门级例子:从ubuntu:14.04镜像启动一个容器,成功后在容器内部执行/bin/echo ‘hello world’命令,如果当前物理机没有该镜像,则执行docker pull从Docker Hub获取镜像,执行成功后,容器立马停止
#sudo docker runubuntu:14.04 /bin/echo 'Hello world'
参数解释
dockerrun:docker中的启动容器命令
Ubuntu:镜像名称
14:04:镜像TAG,如果不指定TAG,docker使用最新的发行版TAG:latest
/bin/echo ‘Helloworld’:在容器内执行的命令
该命令执行过程
l 如果本地有ubuntu这个image就从它创建容器,否则从公有仓库下载
l 从image创建容器
l 分配一个文件系统,并在只读的image层外面挂载一层可读写的层
l 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
l 从地址池配置1个ip地址给容器
l 执行你指定的程序,在这里启动一个/bin/bash
启动交互模式容器
以交互模式启动一个容器(具体参数意义请执行dockerrun --help)
$ sudo docker run -t-i ubuntu:14.04 /bin/bash
参数解释
-t:开启一个终端
-i:以交互模式运行
启动后台模式容器
以后台模式运行一个容器
#sudo docker run -dubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1;done"
参数解释
-d:以后台Daemon方式运行,执行成功后会返回一个该容器的ID
以映射端口方式启动一个Web容器
# sudo docker run -d -P training/webapp python app.py
参数解释
-d:以后台Daemon方式运行,执行成功后会返回一个该容器的ID
-P:端口映射,外部端口到容器端口的映射规则由docker负责
-p:自己指定端口映射规则,格式为:-p 外部端口:容器端口
通过docker ps -l,可以查看到其PORTS列的端口映射规则
当然你也可以,手工指定端口映射规则来启动Web容器
#sudo docker run -d -p 5000:5000 training/webapp pythonapp.py
备注:-p 完整的参数为:-p ip:hostport:port,将当前物理机的ip的端口映射到容器的端口
如果你想通过很快捷的方式查看容器的端口
#sudo docker port 容器ID或容器名称
查看容器的具体信息
以JSON的格式返回容器的具体信息
#sudo docker inspect容器ID或容器名称
进入容器执行命令
#sudo docker exec -it 容器ID /bin/bash
备注:一般对运行着的后台容器,执行该命令。查看其容器内部的情况。
查看容器的日志
$sudo docker logs 容器ID或容器名称
参数解释
-f:以滚动的形式查看日志,类似于linux的tail -f XXX.log
退出当前容器
$sudo exit //在容器内部执行该命令(或crtl+D),一般在交互模式下退出当前容器
备注:容器仍然运行着
创建容器
# sudo docker create--name ubuntContainer ubuntu:14.04 /bin/echo 'Hello world'
重启容器
#sudo docker restart 容器ID
暂停容器
#sudo docker pause 容器ID //暂停
#sudo docker unpause 容器ID //解除暂停
停止容器
$sudo docker stop 容器ID或容器名称
#docker stop $(docker ps -q -a) //一次性停止所有容器,慎用
杀死容器
$sudo docker kill 容器ID或容器名称
删除容器
$sudo docker rm 容器ID或容器名称 //删除容器,正在运行的容器不能删除
#sudo docker rm $(docker ps -q -a) //一次性删除所有容器,慎用
单个主机间的容器访问
下面我们通过mysql_server容器与mysql_client容器的互联来了解link
Ø 创建mysql_server镜像,并生成一个容器
#cd /
#mkdir mysql_server
#vi Dockerfile
FROM centos:centos6
RUN yum install -y mysql-server mysql
RUN /etc/init.d/mysqld start &&\
mysql -e"grant all privileges on *.* to 'root'@'%' identified by'mysql';"&&\
mysql -e"grant all privileges on *.* to 'root'@'localhost' identified by'mysql';"&&\
mysql -u root-pmysql -e "show databases;"
EXPOSE 3306
CMD ["/usr/bin/mysqld_safe"]
# sudo docker build -t ningyougang/mysql_server . //生成镜像
#sudo docker run --name=mysql_server -d -Pningyougang/mysql_server //生成mysql_server容器
Ø 创建mysql_client镜像,并生成一个link到mysql_server的client容器
#cd /
#mkdir mysql_client
#vi Dockerfile
FROM centos:centos6
RUN yum install -y mysql
#sudo docker build -t ningyougang/mysql_client . //生成镜像
#sudo dockerrun --name=mysql_client1 --link=mysql_server:db -t -i ningyougang/mysql_client/usr/bin/mysql -h db -u root -pmysq //生成mysql_client容器
参数解释
--link:<name or id>:alias
通过上面的命令,link中的别名(alias)db即是mysql_client连接mysql_server的连接串
Ø 进入mysql_client研究其link的实现细节
#sudo docker exec-it bfc6cb037165 /bin/bash //以交互模式进入mysql_client容器内部
[root@bfc6cb037165/]# env | grep DB //查看与DB(也就是alias)相关的环境变量
DB_NAME=/mysql_client2/db
DB_PORT=tcp://172.17.0.25:3306
DB_PORT_3306_TCP_PORT=3306
DB_PORT_3306_TCP_PROTO=tcp
DB_PORT_3306_TCP_ADDR=172.17.0.25
DB_PORT_3306_TCP=tcp://172.17.0.25:3306
[root@bfc6cb037165 /]#vi /etc/hosts
172.17.0.27 bfc6cb037165 #docker生成的mysql_client的IP、域名
172.17.0.25 db #docker生成的mysql_server的IP、域名
总结:可以发现docker在mysql_client内通过生成别名的环境变量和profile相关的主机和域名的配置,打通了客户端到服务器端的tcp连接通道,而对于上层的应用,不需要关注IP、端口这些细节,只需要通过别名来访问即可
- Docker.[4].容器操作.
Docker.[4].容器操作. 熟悉的指令: 启动容器 docker run 交互式启动容器 docker run -i -t IMAGENAME /bin/bash 停止容器 exit 停止容器 ...
- Docker基础-容器操作
1.创建容器 1.新建容器 可以使用docker create命令新建一个容器. [root@linux-node1 ~]# docker create -it ubuntu:latest ffc90 ...
- 【Docker】容器操作(转)
来自:https://www.cnblogs.com/zydev/p/5803461.html 列出主机上的容器 列出正在运行的容器: docker ps 列出所有容器: docker ps - ...
- Docker:镜像操作和容器操作
镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...
- centos7下安装docker(11容器操作总结)
这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...
- Docker学习(三)docker容器操作
上一篇:Docker学习(二)docker镜像操作 容器是基于镜像创建的,说白了把一个镜像运行起来就是容器 查看容器 docker ps 上面什么也没有,因为我们没有正在运行的容器,下面我门启动一个容 ...
- docker 容器操作( 以 tomcat 为例 )
一.容器操作 一个镜像可以启动多个容器.比如一个 tomcat 镜像,可以启动多个tomcat 容器,启动后的这些 tomcat 都是各自独立的 二.步骤 1.搜索镜像 [root@localhost ...
- 二、docker 镜像容器常用操作(让我们用docker 溜得飞起)
前言 上篇讲了我们如何安装docker,现在该我们一展拳脚的时候了.接下来让我们一起学习一下docker常见的操作,让我们能够会使用 docker. 基本概念 在讲使用之前,还是先将一下docker ...
- Docker 容器操作
1. 创建并运行 一个容器 docker run -it --rm centos:latest bash run 运行容器 -it 以交互方式运行容器 --rm 退出容器后删除容器 cen ...
随机推荐
- go学习(二)目录管理
1. go 环境变量 GOROOT golang 安装目录的绝对路径 GOPATH 工作目录(worksapce) GOBIN go install编译存放路径.不允许设置多个路径.可以为空.为空时则 ...
- HashSet实现不重复储值原理-附源码解析
在HashSet中,基本的操作都是由HashMap底层实现的,因为HashSet底层是用HashMap存储数据.当向HashSet中添加元素的时候,首先计算元素的hashcode值,然后用这个(元素的 ...
- C#压缩文件夹坑~
dotNet疯狂之路No.29 今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳. We're here to put a dent in t ...
- 转: web 页面加载速度优化实战-100% 的飞跃提升
前言 一个网站的加载速度有多重要? 反正我相信之前来 博主网站 的人至少有 50% 在加载完成前关闭了本站. 为啥捏? 看图 首页完整加载时间 8.18s,看来能进来看博主网站的人都是真爱呀,哈哈. ...
- oracle、instantclient以及plsql安装包
链接:http://pan.baidu.com/s/1skZidWT 密码:l1hq
- Python功能键
swapcase ,大小写翻转 title,每个单词首字母大写 upper,全部大写 lower,全小写 center,居中(可填充符号) lstrip,去除首尾空格斜杠符号 find,寻找出现的位数 ...
- IPFS网络是如何运行的(p2p网络)
IPFS是一个p2p网络,先来看看BitTorrent的p2p网络是如何工作的? 想要bt下载一个文件,首先你需要一个种子文件torrent,种子文件包含至少一个 Tracker(一台服务器地址)信息 ...
- 剑指Offer-求1+2+3+...+n
package Other; /** * 求1+2+3+...+n * 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句( ...
- 【Android】你知道还可以通过 View.animate() 来实现动画么
这次想来讲讲 View.animate(),这是一种超好用的动画实现方式,用这种方式来实现常用的动画效果非常方便,但在某些场景下会有一个坑,所以这次就来梳理一下它的原理. 基础 首先,先来看一段代码: ...
- 选择排序—堆排序(Heap Sort) 没看明白,不解释
堆排序是一种树形选择排序,是对直接选择排序的有效改进. 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆.由堆的定义可以看出,堆顶元素(即第一个元素) ...