Docker环境部署;Docker镜像;Docker基本命令

什么是容器?
• 容器技术已经成为应用程序封装和交付的核心技术
• 容器技术的核心有以下几个内核技术组成:
– CGroups(Control Groups)-资源管理
– NameSpace-进程隔离
– SELinux安全
• 由于是在物理机上实施隔离,启动一个容器,可以像
启动一个进程一样快速

什么是Docker?
• Docker是完整的一套容器管理系统
• Docker提供了一组命令,让用户更加方便直接地使
用容器技术,而不需要过多关心底层内核技术

Docker优点
• 相比于传统的虚拟化技术,容器更加简洁高效
• 传统虚拟机需要给每个VM安装操作系统
• 容器使用的共享公共库和程序

Docker的缺点
• 容器的隔离性没有虚拟化强
• 共用Linux内核,安全性有先天缺陷
• SELinux难以驾驭
• 监控容器和容器排错是挑战

环境准备:

Docker1:内存4G  要求能上网 

Docker2 :内存4G 要求能上网

一、部署

环境准备:

1.安装前准备
• 需要64位操作系统
• 至少RHEL6.5以上的版本,强烈推荐RHEL7
• 关闭防火墙(不是必须)

2.安装Docker
• 软件包列表:
– docker-engine
– docker-engine-selinux

[root@docker02 ~]# yum -y install docker-engine

3.启动docker服务

service docker restart

4.查看服务

[root@docker01 ~]# docker version  
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        
 OS/Arch:      linux/amd64

 

二、Docker的使用1.  docker 镜像操作
docker version                                       //查看版本
docker images                                       //查看镜像
docker search 关键字                          //搜索镜像
docker pull 镜像的名字                       //下载镜像
docker help 命令                                   // 查看命令帮助
docker push 镜像名字                                       //上传镜像

docker save busybox:latest >busybox.tar          // 导出镜像
docker load <   busybox.tar                                   // 导入镜像                       

2. 镜像的启动   
-i 交互式
-t 终端
-d 后台进程
2.1如果是可以交互的
格式:docker run -it  镜像的名字:标签  镜像里面的命令

[root@docker02 ~]# docker run -it centos /bin/bash            //镜像的标签和镜像里的命令都可以省略不写

2.2 如果是服务类的镜像例如Ngixn
[root@docker01 ~]# docker run -d nginx   

3.镜像常用命令
– docker history 镜像名字            //查看镜像制作历史
[root@docker01 ~]# docker history centos      

– docker inspect 镜像名字            //查看镜像底层信息
[root@docker01 ~]# docker inspect centos

– docker rmi 镜像名字                 //删除本地镜像
[root@docker02 ~]# docker rmi busybox   
[root@docker02 ~]# docker rmi  -f  busybox   //强制删除镜像 (当此镜像有对应的容器在运行时是不能直接删除镜像的;需要先停掉相关的容器。但此时也还是不能删除;因为相应记录还在 docker -a  可以查看; 所以这里加 -f 可以强制删除;不需要先删除容器)

— docker tag  原来的镜像名字:标签    新镜像名字:标签            // 修改镜像名称和标签
[root@docker02 ~]# docker  tag centos:latest   ooo:xxx   //这里类似与Linux中的硬连接;如果想彻底改名把原先的镜像删除即可  

4. 容器常用命令 
– docker run //运行容器
[root@docker02 ~]# docker run -it  centos
[root@docker02 ~]# docker run -d   nginx
 [root@docker02 ~]# docker run -itd  centos

– docker ps //查看容器列表
[root@docker02 ~]# docker  ps      //查看正在运行的容器
[root@docker02 ~]# docker ps -a    //参看所用的容器信息包括没有运行的
[root@docker02 ~]# docker ps -aq   //输出所有容器的ID号
2df019c9f0d4
199d5b54a373
a8fc30bdde68
c9fd618aa436

– docker stop 容器的ID号   //关闭容器
[root@docker02 ~]# docker stop a8fc30bdde68   //这里的ID可以通过ps查看

– docker start 容器的ID号 //启动容器
[root@docker02 ~]# docker start a8fc30bdde68

– docker restart 容器的ID号  //重启容器
[root@docker02 ~]# docker restart a8fc30bdde68

– docker attach|exec 容器的ID号 //进入容器
[root@docker02 ~]# docker   exec -it a8fc30bdde68 /bin/bash  //这里类似ssh它是单独开了一个进程对原来的进程没有影响可以直exit退出

[root@docker02 ~]# docker attach a8fc30bdde68   //不建议使用这种方式进入进程;连接一个已经运行容器的 pid为1 的进程;这种方式当你直接exit退出的时候整个容器的进程都会死掉;跟run进了一个容器进程直接exit是一样的。如果不想结束需要把容器放入后台(ctrl + pq)

– docker inspect 容器的ID号      //查看容器底层信息
[root@docker02 ~]# docker inspect a8fc30bdde68
[root@docker02 ~]# docker inspect -f "{{.NetworkSettings.IPAddress}}" a8fc30bdde68  //可以过滤出ip
172.17.0.2

– docker top 容器的ID号 //查看容器进程列表
root@docker02 ~]# docker top  a8fc30bdde68

– docker rm 容器的ID号  //删除容器
[root@docker02 ~]# docker rm c9fd618aa436     //在运行的情况下是不可以删除的
c9fd618aa436

  

5.如何修改一个已经运行的nginx的容器的index.html文件
5.1      进入这个容器进程
[root@docker01 ~]# docker  exec -it 4795f4d27ea9 bash      // 这里徐加一个bash进程不然是进不去的

5.2 找到inxex.html 文件
root@4795f4d27ea9:/# find / -name index.html             //由于我们也不知道他的index.html文件放在那里所以采用find查找的方式                                    
/usr/share/nginx/html/index.html

root@4795f4d27ea9:/#nginx  -t          //也可以找到index.html
/usr/share/nginx/html/index.html   

5.3 找到index.html 文件我们就可以愉快的修改它了
root@4795f4d27ea9:/# echo mlgb > index.html

root@4795f4d27ea9:/# ip a     //查看ip

5.4.访问
root@4795f4d27ea9:/# exit     //由于是exec进去的可以直接退出

[root@docker01 ~]# curl 172.17.0.2       //访问我们查到的ip就可以看到我们修改的内容了
mlgb

猜你喜欢

转载自blog.csdn.net/majiangNB/article/details/81868125