bash
sudo docker cp 1.py h6:/test #把当前路径下的1.py复制进docker h6的test目录之下
sudo docker pull ubuntu:20.04 # 将ubuntu:20.04docker镜像从仓库pull到本地
docker images #查看本地镜像
docker run -itd --name h1 ready2-h #运行容器 ubuntu-test--命名的容器名字,ubuntu:20.04在刚命名容器中运行的镜像,改名字进而创建多个docker容器,(
● -i, --interactive:保持标准输入(stdin)打开,允许与容器进行交互。
● -t, --tty:为容器分配一个伪终端(pseudo-TTY),以便可以在容器中执行交互式命令。
● -d, --detach:将容器放入后台运行模式,即使没有终端连接也保持容器运行。
docker rm ubuntu3 ubuntu4# : 删除创建的container
docker stop ubuntu3 ubuntu4 #:停止正在运行的container
docker start host1 #启动
docker ps #查看正在运行的容器
docker ps -a #查看包括已经停止的容器
docker ps -aq #列出所有容器的 ID,包括运行中的和停止的容器 , 这个命令在清理容器时非常有用。例如,要删除所有容器
docker rm $(docker ps -aq)
docker build -t <image_name>:<tag> . # 会使用当前目录下的 Dockerfile 来构建 Docker 镜像。
docker save -o <output_file>.tar <image_name>:<tag> #:Docker 镜像导出为 tar 文件,便于备份或转移到其他系统
docker load -i dm_v1.tar # 将一个已经保存为 .tar 文件的 Docker 镜像加载到本地的 Docker 环境中 ,-i 参数指定要加载的 .tar 文件
容器内
bash
sudo docker exec -it h1 /bin/bash #通过exec命令进入ubuntu容器,进入ubuntu20.04image实例出的容器后,sudo,ifconfig一系列命令不能用,apt-get update apt-get install net-tools先安装ifconfig
sudo docker attach dockername
apt-get install iputils-ping安装ping
apt-get install iproute2安装 ip addr命令查看容器内接口
#容器内创建ovs时apt-get install openvswitch-switch似乎并没有启动ovs服务,
service openvswitch-switch start #先启动服务,就可以使用ovs了
docker cp 命令将本地文件复制到容器中:
docker cp file <container_id>:/path/in/container/file
/path/on/local/system/file 替换为本地系统上要上传的文件路径,将 <container_id> 替换为容器的实际 ID,将 /path/in/container/file 替换为容器中要保存文件的路径。
Ctrl + p,然后 Ctrl + q:在使用 docker attach 时,可以安全地分离终端而不终止容器。
网络模式相关命令
bash
docker run -itd --name ubuntu-test --net none ubuntu:20.04
docker inspect --format='{{.HostConfig.NetworkMode}}' h1 查看容器host2的网络模式
docker network create --subnet 192.168.1.0/24 --gateway 192.168.1.1 ryu-net
● docker network create: 这是 Docker 命令的一部分,用于创建一个网络。
● --subnet 192.168.1.0/24 网关为 192.168.1.1 ryu-net: 这是要创建的网络的名称
docker network ls:列出所有的 Docker 网络。
docker inspect <container id>: 在 docker inspect 输出的 JSON 数据中,查找 NetworkSettings 部分,以了解容器的网络配置。你也可以使用 --format 选项直接提取网络模式。
创建新镜像
bash
docker rmi <image>:删除镜像
docker commit [CONTAINER ID] [IMAGE NAME] #容器ID 创建的镜像名
docker images #可以看到该镜像已经创建成功,下次需要新建容器时可直接使用该镜像
ovs-docker工具
bash
sudo ./ovs-docker add-port ovs eth0-ovs host1 --ipaddress=10.0.1.2/24 --gateway=10.0.1.1
#创建了一对接口, 利用ovs-docker工具给容器host1添加一个接口eth0-ovs,其ip为10.0.1.2/24,这个接口直连ovs网桥,
#在主机端也会创建一个接口02e9db67174f4_l(这种形式)ifconfig可查到,sudo ovs-vsctl show也可查到
问题:
重启虚拟机ovs-docker创建的一对端口会直接消失,在ovs-docker中创建一对接口的命令
会提示已经创建,但在ovs和docker中都找不到端口,删除ovs后重新创一个即可 如何查看创建一对的接口的名字,让h2 ping
h4,ifconfig检查个端口的前后RX TX情况,便可得到