docker学习4-Docker容器技术入门(一)-docker安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tiger_lin1/article/details/90648387

docker学习4-Docker容器技术入门(一)-docker安装

1、 泊坞窗技术介绍

泊坞是一个基于LXC技术之上构建的容器容器引擎,通过内核虚拟化技术(命名空间及cgroup中)来提供容器的资源隔离与安全保障,KVM是通过硬件实现的虚拟化技术,它是通过系统来实现资源隔离与安全保障,占用系统资源比较小
官方网站: https: //www.docker.com/
码头工人组成:
客户端与服务端
泊坞窗组件:
镜像
容器
仓库

2、码头工人与OpenStack的对比

3、Docker的优点
1)简化程序:
Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,便可以实现虚拟化.Docker改变了虚拟化的方式,在Docker容器的处理下,只需要数秒就能完成。
2)多样性:
Docker帮你打包你的纠结!比如Docker镜像; Docker镜像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如Web应用,后台应用,数据库应用,大数据应用比如Hadoop集群,消息队列等等都可以打包成一个镜像部署。
3)节省开支:
云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维定势.Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

4、docker的应用场景
1)需要简化配置(测试环境与生产环境不同)
2)代码管理(代码上传与下载)
3)提升开发效率(开发环境配置的安装和openstack kvm相同)
4)应用隔离
5)服务器整合
6)调试
7)多终端,多租户
8)需要快速部署与环境一致性

5、docker安装与配置
安装docker服务

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

下载镜像文件

[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker pull centos:latest
 
 [root@localhost ~]# docker images

删除镜像

[root@localhost ~]# docker rmi 9f38484d220f

6、Docker容器创建与管理
1)创建容器
方法一:

[root@localhost ~]# docker run centos /bin/echo "nihai" ##创建容器
 
[root@localhost ~]# docker ps -a ##查看所有容器

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

[root@localhost ~]# docker run --name mgg -t -i centos /bin/bash
                            名称 分配伪终端 -i 处于打开状态
[root@da3c1442f360 /]# ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 12:52 ?        00:00:00 /bin/bash
root         16      1  0 12:53 ?        00:00:00 ps -ef


[root@localhost ~]# docker ps

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

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

[root@da3c1442f360 /]# exit ##退出容器
Exit

[root@localhost ~]# docker start da3c1442f360 ##启动容器
da3c1442f360

[root@localhost ~]# docker attach da3c1442f360 ##进入容器(必须是启动状态下)
[root@da3c1442f360 /]# hostname
da3c1442f360

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

[root@da3c1442f360 /]# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS  PORTS NAMES

3)使用nsenter命令进入容器

[root@localhost ~]# nsenter --help

用法:
 nsenter [options] <program> [<argument>...]

Run a program with namespaces of other processes.

选项:
 -t, --target <pid>     要获取名字空间的目标进程
 -m, --mount[=<file>]   enter mount 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 do not touch uids or gids
 -r, --root[=<dir>]     set the root directory
 -w, --wd[=<dir>]       set the working directory
 -F, --no-fork          执行 <程序> 前不 fork
 -Z, --follow-context   set SELinux context according to --target PID

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

获取容器的pid

[root@localhost ~]# docker inspect --format "{{.State.Pid}}" da3c1442f360
3185

root@localhost ~]# nsenter -t 3185 -u -i -n -p 
[root@da3c1442f360 ~]# hostname
da3c1442f360
[root@da3c1442f360 ~]# exit
登出
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
da3c1442f360        centos              "/bin/bash"         About an hour ago   Up 48 minutes                           mgg

4)删除容器

[root@localhost ~]# docker ps -a
 

[root@localhost ~]# docker rm  5ce45bed9205  ##接名称也可以,删除一个停止的容器
5ce45bed9205
[root@localhost ~]# docker rm -f 5ce45bed9205   ##删除一个正在运行的容器


 

docker --kill $(docker ps -a -q)            ##删除正在运行的容器

猜你喜欢

转载自blog.csdn.net/Tiger_lin1/article/details/90648387