1、镜像管理命令  
 
docker   images		
[ root@docker-0001 ~] 
docker   search  镜像名称				
[ root@docker-0001 ~] 
docker   pull  镜像名称:标签				
[ root@docker-0001 ~] 
docker   save  镜像名称:标签  -o   备份镜像名称.tar	
[ root@docker-0001 ~] 
docker   load -i   备份镜像名称		
[ root@docker-0001 ~] 
[ root@docker-0002 ~] 
docker   rmi  镜像名称:标签		
[ root@docker-0002 ~] 
docker   history   镜像名称:标签	
[ root@docker-0001 ~] 
docker   inspect  镜像名称:标签	
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
docker   tag  镜像名称:标签  新的镜像名称:新的标签	
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
拷贝教学环境镜像到docker-0001主机,并导入
[ root@ecs-proxy ~] 
[ root@docker-0001 ~] 
  
 容器管理命令  
 
启动容器
docker   run 命令:docker   run   -参数   镜像名称:镜像标签    启动命令
docker-0001根据myos:v2009镜像启动并进入一个容器
[ root@docker-0001 ~] 
[ root@89d1ec3a0dc8 /] 
[ root@docker-0001 ~] 
启动容器时指定名字
[ root@docker-0001 ~] 
查看容器:docker   ps    [  -a    所有容器id ]    [   -q   只显示容器 id   ] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
删除容器:docker   rm    容器id
[ root@docker-0001 ~] 
删除正在使用的容器时,会报错,无法删除,需要先停止容器,再执行删除命令
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
删除所有的容器:支持命令行重录,前一个命令的结果可以作为后一个命令的参数
[ root@docker-0001 ~] 
临时启动容器 --rm,容器结束后自动删除,在内存中运行,退出后直接没有
第一个终端启动centos:7容器
[ root@docker-0001 ~] 
[ root@e5f780c059f6 /] 
第二个终端查看,可以看到结果
[ root@docker-0001 ~] 
回到第一个终端,退出容器
[ root@e5f780c059f6 /] 
在第二个终端查看,可以看到已经停止,但是容器还在,没有删除
[ root@docker-0001 ~] 
此时在第一个终端再次创建一个容器test2,加上--rm的选项查看结果
[ root@docker-0001 ~] 
第二个终端查看,可以看到结果
[ root@docker-0001 ~] 
回到第一个终端,退出容器
[ root@e5f780c059f6 /] 
在第二个终端查看,可以看到已经停止,但是容器已经没有
[ root@docker-0001 ~] 
容器管理命令启动、停止、重启
  - [ x]  docker    start   	容器id
  - [ x]  docker    stop   	容器id
  - [ x]  docker    restart   	容器id
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
查看容器信息:docker   inspect    容器id
[ root@docker-0001 ~] 
.. .. .. 
                    "Gateway" :  "172.17.0.1" ,
                    "IPAddress" :  "172.17.0.2" ,
.. .. .. 
[ root@docker-0001 ~] 
Nginx is running ! 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
拷贝文件
docker  cp  本机文件路径      容器id:容器内路径(上传)
docker  cp  容器id:容器内路径  本机文件路径(下载)
拷贝宿主机文件到容器
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
在刚刚启动的第一个容器终端中查看结果
[ root@b6a1ab762bd5 /] 
busybox.tar
拷贝容器内文件到宿主机
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
busybox.tar  hosts  myos.tar.xz
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
< html> 
< head> < title> 404  Not Found< /title> < /head> 
< body> 
< center> < h1 >404  Not Found< /h1 >< /center> 
< hr> < center> nginx/1.17.6 < /center> 
< /body> 
< /html> 
[ root@docker-0001 ~] 
2023 /06/11 12 :45:32 [ error]  7 
但是如果apache的服务也是同样测试,可能结果就不显示,是因为软件原因
连接容器,启动新进程:docker   exec    -it     容器id    命令
[ root@docker-0001 ~] 
[ root@164a7b1a6c57 /] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@164a7b1a6c57 /] 
UID         PID  PPID   C STIME TTY          TIME CMD
root         1      0   0  12 :49 pts/0    00:00:00 /bin/bash
root        42      0   0  12 :50 pts/1    00:00:00 /bin/bash
root        63     42   0  12 :50 pts/1    00:00:00 ps  -ef 		
[ root@164a7b1a6c57 /] 
连接容器启动进程:docker    attach   容器id
attach 以上帝进程的身份,进入容器内部,当执行exit退出容器时,会结束整个容器,通常用于在测试时,查看报错信息;
[ root@docker-0001 ~] 
[ root@164a7b1a6c57 /] 
UID         PID  PPID   C STIME TTY          TIME CMD
root         1      0   0  12 :49 pts/0    00:00:00 /bin/bash
root        64      1   0  12 :52 pts/0    00:00:00 ps  -ef 
[ root@164a7b1a6c57 /] 
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
		
  
 简单镜像制作  
获取基础镜像
方法一:docker-0001主机备份centos:7镜像,拷贝到docker-0002导入
[ root@docker-0001 ~] 
[ root@docker-0001 ~] 
[ root@docker-0002 ~] 
方法二:docker-0002主机直接下载
[ root@docker-0002 ~] 
commit 自定义镜像
使用镜像启动容器,在该容器基础上修改,另存为一个新镜像
  - [ x]  docker   run  -it     centos:latest   /bin/bash
  - [ x]  配置 yum,安装软件,系统配置
  - [ x]  docker   commit  容器id   新镜像名称: 新镜像标签
  
在docker-0001创建一个centos的容器
[ root@docker-0002 ~] 
[ root@cb458c4e9ede /] 
[ root@cb458c4e9ede yum.repos.d] 
[ root@cb458c4e9ede yum.repos.d] 
[ root@cb458c4e9ede yum.repos.d] 
[ root@cb458c4e9ede yum.repos.d] 
[ root@cb458c4e9ede yum.repos.d] 
commit 提交容器,生成新的镜像;mycentos为容器的名字
[ root@docker-0002 ~] 
[ root@docker-0002 ~] 
[ root@docker-0002 ~] 
使用 docker   run 验证新的镜像
[ root@docker-0002 ~] 
[ root@docker-0002 ~] 
[ root@aa14feea7b4e /] 
[ root@aa14feea7b4e /] 
[ root@aa14feea7b4e /] 
  
 容器内部署应用  
删除之前所有的容器
[ root@docker-0002 ~] 
[ root@docker-0002 ~] 
此时就可以在容器里面安装相关的软件包
[ root@e0e8f8596277 /] 
[ root@e0e8f8596277 /] 
[ root@e0e8f8596277 /] 
[ root@e0e8f8596277 /] 
.. .. .. .. 
[ Service] 
EnvironmentFile = /etc/sysconfig/httpd		
ExecStart = /usr/sbin/httpd $OPTIONS  -DFOREGROUND 		
[ root@e0e8f8596277 /] 
.. .. .. 
LANG = C
[ root@e0e8f8596277 /] 
[ root@e0e8f8596277 /] 
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the ' ServerName' directive globally to suppress this message
另外开一个docker-0002终端,通过提示的地址172.17.0.2
[ root@docker-0002 ~] 
hello world
此时容器内容的终端是被占用的,是在前台运行的,如果关闭,不能够再次访问httpd,若想要退出,使用ctrl + pq
[ root@docker-0001 ~] 
[ root@e0e8f8596277 /] 
UID         PID  PPID   C STIME TTY          TIME CMD
root         1      0   0  13 :17 pts/0    00:00:00 /bin/bash
root        27      1   0  13 :20 pts/0    00:00:00 /usr/sbin/httpd -D 
apache      28     27   0  13 :20 pts/0    00:00:00 /usr/sbin/httpd -D 
apache      29     27   0  13 :20 pts/0    00:00:00 /usr/sbin/httpd -D 
apache      30     27   0  13 :20 pts/0    00:00:00 /usr/sbin/httpd -D 
apache      31     27   0  13 :20 pts/0    00:00:00 /usr/sbin/httpd -D 
apache      32     27   0  13 :20 pts/0    00:00:00 /usr/sbin/httpd -D 
root        54      0   0  13 :27 pts/1    00:00:00 /bin/bash
root        76     54   0  13 :27 pts/1    00:00:00 ps  -ef 
[ root@e0e8f8596277 /] 
  
 补充  
名称空间:  
	是指可以对系统资源空间进行分割隔离的技术,例如:创建一个虚拟机,在虚拟机里的所有操作,都不会对真实机造成影响。
名称空间分为六大类,可以从各个方面来对系统资源空间进行隔离;
	UTS、NETWORK、MOUNT、USER 、PID、IPC
UTS:   
   
NETWORK:网络命名空间,作用:分割网络,即容器内的网络配置和宿主机之间相互不受干扰;
   例如:
       
       
MOUNT:
   
   例如:
       
USER : 
   
PID:
   
   例如:
       
       
       
       
IPC: