赞
踩
查看网络情况:netstat -tu|pn
列出当前正在运行的容器和它的相关信息:docker ps
停止容器:docker stop 容器ID
删除容器:docker rm 容器ID(注意删除容器前需先将容器停止)
简便删除容器:docker rm -f 容器ID(无需先停止容器,线上不推荐)
删除镜像:docker rmi 镜像名:标签
查看linux版本:cat /proc/version
推出当前容器命令:exit
3. 容器的生命周期
Dockersfile
FROM 设置基准镜像
MAINTAINER 设置维护人
WORKDIR 切换工作目录
ADD 复制目录下的所有文件到容器目录
例子:
在这里插入图片描述
比较了 Docker 和传统虚拟化方式的不同之处:
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用 进程;
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。 因此容器要比传统虚拟机更为轻便。
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资 源
镜像和容器的关系
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建 很多容器。
7. docker常用命令
(1)帮助命令
rmi是删除镜像,rm是删除容器命令;
(2)查看docker日志命令
docker logs -t -f --tail 3 容器ID
(3)查看容器中运行的进程
docker top 容器ID
(4)查看容器的细节可以通过inspect命令
docker inspect 容器ID
(5)进入运行的容器
docker attach 容器id
(6)文件复制
从容器中拷贝内容到宿主机中
docker cp 容器ID:容器内路径 目的地路径
(7)镜像制作命令
docker commit -m=“要提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
(8)容器挂载数据卷读写权限
设置只读权限例子:
docker run -it -v /root/dockerfile1:/root/dockerfile1:ro centos
(9)数据卷使用
①添加数据卷:
运行一个centos容器
docker run -it -v /宿主机绝对路径:/容器内目录 镜像名
②dockerfile添加
宿主机根目录下创建一个mydocker,并在该目录下创建一个文件,内容如下
根据这个DockerFile构建我们的镜像文件(注意最后的点号)
docker build -f dockerFile1 -t bobo/centos .
说明:点号(.)是指镜像构建时打包上传到Docker引擎中的文件的目录,不是本机目录;
(10)创建数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据的容器,称之为数据卷容器。
① 启动一个父容器
docker run -it --name dc01 bobo/centos
② 创建两个子容器
docker run -it --name dc02 --volumes-from dc01 bobo/centos
docker run -it --name dc03 --volumes-from dc01 bobo/centos
8. DockerFile
DockerFile是用来构建Docker镜像的 构建文件 ,是由一系列 命令 和 参数 构成的 脚本 。
指令集:
CMD命令存在多个时,后面的会把前面的覆盖掉;
ENTRYPOINNT存在多个时,会顺序执行,不会被覆盖掉;
应用实例:
FROM java:8 #基础镜像
MAINTAINER zhangsan #维护人
ADD demo-0.0.1-SNAPSHOT.jar demo.jar #宿主机文件放入基础镜像,并命名为demo
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"] #容器启动时运行命令
创建镜像:docker build -f ./DockerFile -t demo:1.0 .
启动镜像:docker run --name demo -d -p 8080:8080 -t demo:1.0
9. 网卡信息
通过ip a 可以看到当前的centos中有的4个网卡信息作用分别是
网卡信息解析
状态:UP/DOWN/UNKOWN等
link/ether:MAC地址
inet:绑定的IP地址
(1) 网卡操作
为网卡eth0增加ip地址
ip addr add 192.168.100.120/24 dev eth0
为网卡删除ip地址
ip addr del 192.168.100.120/24 dev eth0
操作命令:
(1) 添加一个namespace
ip netns add ns1
(2) 查看当前具有的namespace
ip netns list
(3) 删除namespace
ip netns delete ns1
(4) 查看namespace【ns1】的网卡情况
ip netns exec ns1 ip a
(5) 启动网络状态
ip netns exec ns1 ifup lo
(6) 关掉网络
ip netns exec ns1 ifdown lo
(7) 通过Link设置状态
ip netns exec ns1 ip link set lo up
ip netns exec ns1 ip link set lo down
(1) 创建一对link,也就是接下来要通过veth pair连接的link
ip link add veth-ns1 type veth peer name veth-ns2
(2) 然后在宿主机中就会多出一对网卡信息
(3)然后将创建好的 veth-ns1交给namespace1,把veth-ns2交给namespace2
ip link set veth-ns1 netns ns1
ip link set veth-ns2 netns ns2
(4)再查看ns1和ns2中的link情况
(5)此时veth-ns1和veth-ns2还没有ip地址,显然通信还缺少点条件,需配置ip地址
ip netns exec ns1 ip addr add 192.168.0.11/24 dev veth-ns1
ip netns exec ns2 ip addr add 192.168.0.12/24 dev veth-ns2
(6)再次查看,发现state是DOWN.所以我们需要启用对应的网卡
[root@localhost ~]# ip netns exec ns1 ip link set veth-ns1 up
[root@localhost ~]# ip netns exec ns2 ip link set veth-ns2 up
(7)然后就可以相互之间ping通了
ip netns exec ns1 ping 192.168.0.12
ip netns exec ns2 ping 192.168.0.11
(8) Container的NameSpace
每个container,都会有自己的network namespace,并且是独立的。
(9) docker中使用ping命令
docker exec -it tomcat01 ping 172.0.0.1
(10) 查看 tomcat01中的网络
docker exec -it tomcat01 ip a
(11) 查看tomcat01容器中ip桥接网络
brctl show
(12) 查看docker中的网络模式
docker network ls
bridge也是docker中默认的网络模式
(13) 检查brige命令
docker network inspect bridge
(14) tomcat01容器中是可以访问互联网的,顺便把这张图画一下咯,NAT是通过iptables实现的。
(3) 查看tomcat-net详情信息
docker network inspect tomcat-net
(4) 删除network
docker network rm tomcat-net
(5) 创建tomcat容器,并指定使用tomcat-net
docker run -d --name custom-net-tomcat --network tomcat-net tomcat-ip:1.0
(6) tomcat01容器连接上tomcat-net
docker network connect tomcat-net tomcat01
None模式
None模式不会为容器配置任何IP,也不能访问外部网络以及其他容器.它具有环回地址,可用于运行批 处理作业.
(1) 创建一个tomcat容器,并指定网络为none
docker run -d --name my-tomcat-none --network none tomcat-ip:1.0
(2) 查看ip地址
docker exec -it my-tomcat-none
(3) 检查none网络
docker network inspect none
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。