docker(2)组成,运行

1Docker技术介绍

DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实现的虚拟化技术,它是通过系统来实现资源隔离与安全保障,占用系统资源比较小

官方网站:https://www.docker.com/

Docker组成:

  客户端与服务端

Docker组件:

  镜像

  容器

  仓库

 

2Docker与Openstack对比

 

3Docker 的优点

1.   1)简化程序:

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,在Docker容器的处理下,只需要数秒就能完成。

2)多样性:
Docker
帮你打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

3)节省开支:
云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

 

4Docker的应用场景

1)需要简化配置(测试环境与生产环境不同)

2)代码管理(代码上传与下载)

3)提升开发效率(开发环境配置的安装和openstack kvm相同)

4)应用隔离

5)服务器整合

6)调试

7)多终端、多租户

8)需要快速部署与环境一致性

 

5Docker安装与配置

安装Docker服务

root@centos7 ~]# yum install docker -y
[root@centos7 ~]# systemctl start docker

下载镜像文件

[root@centos7 ~]# docker pull centos:latest
Trying to pull repository docker.io/library/centos ...
centos7: Pulling
from docker.io/library/centos
93857f76ae30: Pullcomplete
Digest: sha256:
4eda692c08e0a065ae91d74e82fff4af3da307b4341ad61fa61771cc4659af60
[root@centos7 ~]
# docker images
REPOSITORY        TAG      IMAGE ID    CREATED     SIZE
docker.io/centos  centos7  a8493f5f50ff
3 days ago  192.5 MB

删除镜像

[root@centos7 ~]# docker rmi a8493f5f50ff    ##容器ID

 

6Docker容器创建与管理

1)创建容器

方法一:

[root@centos7 ~]# docker run centos/bin/echo "nihao"  ##创建容器
nihao
[root@centos7 ~]
# docker ps -a   ##查看所有容器
CONTAINER ID  IMAGE  COMMAND   CREATED    STATUS  PORTS    NAMES
3c113f9a4f1b centos "/bin/echo nihao"43 seconds ago Exited (0) 41 seconds ago  boring_liskov

这里没有指定容器名称,自动命名,状态是自动退出



方法二:创建一个自定义名称的容器

[root@centos7 ~]# docker run --name mgg -t -i centos/bin/bash
 
                            名称  分配伪终端  -i 处于打开状态
[
root@2db7f1389dbd /]# ps -ef
UID   PID  PPID  C STIME TTY  TIME CMD
root  
1    0  022:46 ?   00:00:00 /bin/bash
root  
13   1  022:49 ?  00:00:00 ps -ef
[
root@centos7 ~]# docker ps
CONTAINER ID  IMAGE   COMMAND   CREATED   STATUS PORTS    NAMES
2db7f1389dbd centos  "/bin/bash"  4 minutes ago   Up 4 minutes   mgg

docker ps -a是显示所有容器包括没有运行的(同virsh list --all



2)进入、退出、启动容器

[root@2db7f1389dbd /]# exit   ##退出容器
exit
[root@centos7 ~]
# docker start 2db7f1389dbd  ##启动容器
2db7f1389dbd
[root@centos7 ~]
# docker attach2db7f1389dbd  ##进入容器(必须是启动状态下)
[root@2db7f1389dbd /]
# hostname
2db7f1389dbd

这种进入方式,退出后容器就进入Down状态,如下

[root@2db7f1389dbd /]# exit
exit
[root@centos7 ~]
# docker ps
CONTAINER ID   IMAGE  COMMAND   CREATED    STATUS   PORTS   NAMES



3)使用nsenter命令进入容器

[root@centos7 ~]# nsenter --help
Usage:
 
nsenter [options] <program>[<argument>...]
Run a program with namespaces of other processes.
Options:
 -t, --target <pid>    target process to get namespaces from
 -m, --mount[=<file>]   entermount namespace
 
-u, --uts[=<file>]    enter UTS namespace (hostname etc)
 
-i, --ipc[=<file>]    enter System V IPC namespace
 
-n, --net[=<file>]    enter network namespace
 
-p, --pid[=<file>]    enter pid namespace
 
-U, --user[=<file>]   enter user namespace
 
-S, --setuid <uid>     set uid in entered namespace
 
-G, --setgid <gid>     set gid in entered namespace
 
    --preserve-credentials donot touch uids or gids
 
-r, --root[=<dir>]     set the root directory
 
-w, --wd[=<dir>]      set the working directory
 
-F, --no-fork         donot fork before exec'ing <program>
 
-Z, --follow-context   set SELinux context according to --targetPID
 
-h, --help     display this help andexit
 
-V, --version  output versioninformation andexit

获取容器的PID

[root@centos7 ~]# docker inspect --format"{{.State.Pid}}" 2db7f1389dbd
4580
[
root@centos7 ~]# nsenter -t 4580 -u -i -n -p
[
root@2db7f1389dbd ~]# hostname
2db7f1389dbd
[
root@2db7f1389dbd ~]# exit
logout
[
root@centos7 ~]# docker ps
CONTAINER ID  IMAGE    COMMAND    CREATED   STATUS   PORTS  NAMES
2db7f1389dbd centos    "/bin/bash"22 minutes ago   Up 7 minutes  mgg

 

4)删除容器

[root@centos7 ~]# docker ps -a
CONTAINER ID   IMAGE  COMMAND   CREATED     STATUS   PORTS    NAMES
2db7f1389dbd centos  "/bin/bash"  31 minutes ago  Up 16 minutes  mgg
3c113f9a4f1b centos  "/bin/echonihao"38 minutes ago Exited (0) 38 minutes ago boring_liskov
[root@centos7 ~]
# docker rm 3c113f9a4f1b ##接名称也可以,删除一个停止的容器
3c113f9a4f1b
[root@centos7 ~]
# docker rm -f  3c113f9a4f1b ##删除一个正在运行的容器
[root@centos7 ~]
# docker ps -a         
CONTAINER ID  IMAGE   COMMAND    CREATED   STATUS    PORTS   NAMES
2db7f1389dbd   centos    "/bin/bash"    31 minutes ago   Up 16 minutes  mgg
[root@centos7 ~]
# docker run --rm centos/bin/echo "hello"   ##创建时自动删除,用于测试
[root@centos7 ~]
#docker --kill $(docker ps-a -q)            ##删除正在运行的容器

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值