docker 原理及命令

Posted X糊涂仙儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 原理及命令相关的知识,希望对你有一定的参考价值。

1、docker启动过程

https://docs.docker.com/get-started/overview/
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个ip地址给容器
执行用户指定的应用程序
执行完毕后容器被终止

2、docker常用命令

# 10080暴露端口,80容器端口 -p端口映射 -d后台运行
docker run -p 10080:80 -d centos7:20211214 /bin/bash -c "while true;do echo hello docker;sleep 1;done"
#进入docker
docker ps -a | grep xxx
cb1e13c7f09c
docker exec -ti cb1e13c7f09c /bin/bash
#列出退出的容器
~]# docker container ls -f "status=exited"
#删除退出状态的容器
docker rm $(docker container ls -f "status=exitd" -q)
#删除容器
docker rm id
#docker 宿主机与容器相互拷贝文件
docker cp /root/file1 30026605dcfe:/home/cloudera
docker cp 30026605dcfe:/home/cloudera/file1 /tmp/

#修改docker网段,原有docker服务需先要关闭
~]# vim /etc/docker/daemon.json

"bip":"172.19.0.1/24"

systemctl restart docker

3、docker网络

#网络命名空间
1、创建网络命名空间,目录位于/var/run/netns/
ip netns add d1-space|名字
ip netns add d2-space
2、进入该虚拟网络环境
ip netns exec d1-space bash
ip addr
3、增加一对虚拟网卡
ip link add veth-docker-01 type veth peer name veth-docker-02
ip link
4、虚拟网络空间 veth-docker-01 veth-docker-02 分别添加到d1-space,d2-space(网络命名空间)
ip link set veth-docker-01 netns d1-space
ip link set veth-docker-02 netns d2-space
5、查看
ip netns exec d1-space ip link
ip netns exec d2-space ip link
6、ip link 分配ip地址、附删除命、并启动端口
ip netns exec d1-space ip addr add|del 192.168.100.101/24 dev veth-docker-01
ip netns exec d2-space ip addr add|del 192.168.100.102/24 dev veth-docker-02
ip netns exec d1-space ip link set dev veth-docker-01 up
ip netns exec d2-space ip link set dev veth-docker-02 up

7、测试互ping
ip netns exec d1-space ping 192.168.100.102
ip netns exec d2-space ping 192.168.100.101

#docker 网络
1、列出docker 网络、展示docker 详细信息
docker network list
docker inspect 6cb6af69b043|container-id
查看连接
yum install bridge-utils && brctl show
查看连接bri的信息
docker network inspect bridge
删除docker网络
ip link set docker0 down
yum install bridge-utils -y
brctl delbr docker0
2、外网连接模式
docker容器访问外网是通过nat
container-01------|
|docker0网桥[gateway_172.17.0.1]-----NAT----eth0(宿主机)_____
container-02------|

3、新建网络桥接
docker network create -d bridge my-bridge | docker network ls
指定container的连接网桥,并通过brctl show 查看网桥连接
docker run -it -d --name centos_v3 --network my-bridge centos /bin/bash
容器连接到network,
docker network connect my-bridge centos_v2
一个容器可连接两个桥,分配两个地址
container-01 |-->172.17.0.1 系统默认桥
container-01 |-->172.18.0.1  自创建桥my-bridge

4、容器映射

5、docker 中 none 网络的理解
新起一个container 叫 centos_v2 并连接网络none. none网络该网络是隔绝状态,不曾有任何网络ip及内容
docker run -itd --name centos_v2 --network none centos /bin/bash
查看该网络详情
docker inspect none

6、docker中host网络,会发现主机名网络名高度一致
docker run -itd --name centos_v4 --network host centos /bin/bash



以上是关于docker 原理及命令的主要内容,如果未能解决你的问题,请参考以下文章

docker的底层原理及运用

Docker-关于docker容器之间的连通性及容器与宿主机之间的连通性

学习Docker的总结

一个docker容器,在宿主机上有几个进程

Docker的四种网络模式和相关网络命令等操作

Docker的四种网络模式和相关网络命令等操作