Docker学习之3——容器
容器(Container)
容器介绍: docker是通过容器来运行业务的,就像运行一个kvm虚拟机是一样的。容器其实就是从镜像创建的一个实例。 我们可以对容器进行增删改查,容器之间也是相互隔离的。和虚拟机最大的区别就是一个是虚拟的一个是隔离的。
缺点:不会像虚拟机那样隔离的那么彻底,我们可以将容器理解为简化版的linux,有进程运行在里面。
#创建容器
Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
#新建并启动容器
[root@controller ~]# docker run -t -i ubuntu:14.04 /bin/bash
root@55456b431849:/#
-t 分配一个伪终端
-i 标准输入保持打开
-d 守护进程运行
root@55456b431849:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@55456b431849:/# pwd
/
root@55456b431849:/# cat /etc/issue
Ubuntu 14.04.5 LTS \n \l
root@55456b431849:/# exit
exit #终止容器
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
#查看处于终止状态的容器
[root@controller ~]# docker ps -a -q
f69ef742b752
be465c0dc442
55456b431849
#启动终止状态的容器
[root@controller ~]# docker start f69ef742b752 #进入容器
Usage: docker attach [OPTIONS] CONTAINER
[root@controller ~]# docker run -idt ubuntu
[root@controller ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc9870d0853f ubuntu "/bin/bash" 22 seconds ago Up 21 seconds small_albattani
[root@controller ~]# docker attach small_albattani
root@cc9870d0853f:/# Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
#一般情况下使用nsenter工具进入容器,安装工具
[root@controller ~]# yum install -y util-linux
[root@controller ~]# docker run --name dockercentos -tid centos
9f228b6525d5a753fbda39b4a339ae3f8de5f26d6d85a56c006488f771b4f45b
[root@controller ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f228b6525d5 centos "/bin/bash" 10 seconds ago Up 7 seconds dockercentos
[root@controller ~]# docker inspect -f "{{ .State.Pid }}" dockercentos
85616
[root@controller ~]# nsenter -t 85616 -m -u -i -n -p
[root@9f228b6525d5 /]# docker inspect -f {{.State.Pid}}容器名或者容器id
#每一个容器都有.State.Pid,所以这个命令除了容器的id需要我们根据docker ps -a去查找,其他的全部为固定的格式
nsenter --target上面查到的进程id --mount --uts --ipc --net --pid #输入该命令便进入到容器中 解释nsenter指令中进程id之后的参数的含义: * –mount参数是进去到mount namespace中
* –uts参数是进入到uts namespace中
* –ipc参数是进入到System V IPC namaspace中
* –net参数是进入到network namespace中
* –pid参数是进入到pid namespace中
* –user参数是进入到user namespace中 我们可以写个脚本:
[root@controller ~]# cat IN_Docker.sh
#!/bin/sh
if [ $# -ne 1 ]
then
echo $"usage:bash $0{dockername}"
exit 1
fi
docker_in(){
NAME_ID=$1
PID=$(docker inspect -f "{{ .State.Pid }}" $NAME_ID)
nsenter -t $PID -m -u -i -n -p
}
docker_in $1
#运用
[root@controller ~]# sh IN_Docker.sh dockercentos
[root@9f228b6525d5 /]# #删除容器 docker rm -f 【NAMES】
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f228b6525d5 centos "/bin/bash" 18 minutes ago Up 18 minutes dockercentos
c5439518dcbe ubuntu:14.04 "/bin/bash" 20 hours ago Exited (0) 20 hours ago elegant_noyce
2bb8a93f5d34 ubuntu "echo 'hello I am ubu" 23 hours ago Exited (0) 19 hours ago gigantic_heyrovsky
[root@controller ~]# docker rm -f elegant_noyce
elegant_noyce
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f228b6525d5 centos "/bin/bash" 19 minutes ago Up 19 minutes dockercentos
2bb8a93f5d34 ubuntu "echo 'hello I am ubu" 23 hours ago Exited (0) 19 hours ago gigantic_heyrovsky #导出容器
[root@controller ~]# docker export dockercentos >test_dockercentos.tar
[root@controller ~]# ls
192.168.128.172 cd1.iso httpd.conf pike.install.sh test_dockercentos.tar web.yml
#导入容器
[root@controller ~]# cat test_dockercentos.tar |docker import - docker/cents7.4
小结:
容器是直接提供应用服务的组件,实现快速启动停止和高效服务性能的基础,生产环境中可以在容器前端引入HaProxy代理容器访问,实现高可用。
Docker学习之3——容器的更多相关文章
- Docker学习笔记——制作容器与容器概念
Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...
- Docker学习第二天-容器
Docker 容器 容器是 Docker 又一核心概念. 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环 ...
- 【转】Docker学习_本地/容器文件互传(5)
将容器内文件拷贝到宿主机 docker cp <containerId>:/导出文件的位置/xxx.sql /宿主机的位置 示例:docker cp bf4c4fff338c:/root/ ...
- docker学习笔记:容器的网络设置
创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...
- 优秀的云计算工程师需要学什么?云计算Docker学习路线
云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...
- Docker学习笔记 - Docker容器内部署redis
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...
- Docker学习笔记 - Docker容器之间的连接
学习目标: 容器之间可以相互连接访问:: --link redis:redisAlias 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN ...
- docker学习-lnmp+redis之搭建lnp容器服务
nginx+php7.0容器服务 本来想用单独的容器(nginx和php分开),但是因为是初学,php容器安装扩展的时候一直失败,所以就把centos+nginx+php放一起搭建了,优点是扩展简单, ...
- Docker学习之Docker容器基本使用
Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...
随机推荐
- ssh 免密登录阿里云主机
在网上找了好几篇教程,都不好使. 终于在这篇找到了答案 解决方案: 在 sshd_config 里面将这一项: AuthorizedKeysFile .ssh/authorized_keys 被我修改 ...
- 如何高效的学习 TensorFlow 代码?
https://www.zhihu.com/question/41667903 Linux[公共基础]:TensorFlow的主要运行平台之一就是Linux,但是正式版对Windows的支持日趋完善, ...
- CSS基础一
css作用 css将内容和样式相分离,便于修改样式.HTML 写网页的内容,CSS写内容的样式 CSS构成 p{ /*p为标签,也可以称为选择器,选择包住的内容的格式*/ font-size:12px ...
- 浅谈React数据流管理
引言:为什么数据流管理如此重要?react的核心思想就是:UI=render(data),data就是我们说的数据流,render是react提供的纯函数,所以用户界面的展示完全取决于数据层.这篇文章 ...
- windows 2008解决120天授权过期问题(亲测可用)
https://blog.csdn.net/tladagio/article/details/80503198 最后的注册号码可以是:就是那个注册号码:5296992 4954438 6565792. ...
- C++ Thrift服务端记录调用者IP和被调接口方法
Apache开源的Thrift(http://thrift.apache.org)有着广泛的使用,有时候需要知道谁调用了指定的函数,比如在下线一起老的接口之前,需要确保对这些老接口的访问已全部迁移到新 ...
- log4j的添加顺序
1.log4j的架包 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api&l ...
- 第2周个人作业:WordCount
Github地址: https://github.com/hddddd/Wordcount 1.PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 ...
- oracle远程连接服务器数据库
oracle远程连接数据库,需要配置本地服务,具体步骤如下: 1. 2.添加新的服务 3.输入服务名(例如:orcl3即服务器数据库名) 4.选择TCP协议 5.输入服务器IP(192.268.10. ...
- 程序员基层知识程序与cpu【更新1】
我是一个小白,但我通过学习我慢慢的懂了一些事.分享出来有错误的望大咖指导. 我们要很明确的明白我们学的是编程而不是编程语言,编程语言只是工具用来方便我们做很多编程有关的事. 首先我在学习的过程中,第一 ...