江明涛的博客
《Docker 入门三》容器管理
《Docker 入门三》容器管理

《Docker 入门三》容器管理

1.创建容器常用选项

命令格式: docker run [options] image [command] [arg....]
选项            描述
-i             交互式
-t             分配一个伪终端 一般-it组合使用,可以进入到容器中,没有守护进程的镜像不使用会直接退出
-d             后台运行
-e             设置环境变量
-p             映射容器端口到宿主机
-P             映射容器所有expose的端口到宿主机随机端口
--name         制定容器名称
-h             设置容器主机名
--ip           制定容器ip,只适用于自定义网络
--network      连接容器到一个网络
-v             将文件系统附加到容器
--restart string 容器退出时重启策略,默认no,可选值:【always|on-failure】

2.容器常用管理命令

命令格式:docker container command
选项               描述
ls                列出容器
inspect           查看一个或多个容器详细信息
exec              在运行容器中执行命令
commit            从指定容器创建一个新镜像
cp                将文件或文件夹复制到容器中
logs              查看指定容器的日志
port              列出或指定容器端口映射
top               显示指定容器运行的进程
stats             显示容器资源使用统计
stop              停止一个或多个容器
start             启动一个或多个容器
restart           重启一个或多个容器
rm                删除一个或多个容器
prune             移除已经停止的容器

3.容器数据持久化

docker提供两种方式将数据从宿主机挂载到容器中
3.1 volumes:docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
  事例:
    创建数据卷
    docker volume create nginx-volume
    docker volume ls
    docker volume inspect nginx-volume
    使用数据卷
    docker run -d --name=nginx --mount src=nginx-volume,dst=/usr/share/nginx/html nginx
    docker run -d --name=nginx -v nginx-volume:/usr/share/nginx/html nginx
3.2 bind mounts: 将宿主机的任意位置的文件或者目录挂载到容器中
  事例:
     挂载宿主机目录到容器
     docker run -d --name=nginx --mount   /
     type=bind,src=/var/www/,dst=usr/share/nginx/html nginx

     docker run-d --name=nginx -v /var/www/:usr/share/nginx/html nginx
     
    

4.容器网络模式

1. 容器网络模型
 veth pair: 成对出现的一中虚拟网络设备,数据从一端进入,从另一端出。用于解决网络命令空间之间隔离
 docker0:网桥是一个二层网络设备,通过网桥可以将linux支持的不同端口连接起来,并实现类似交换机那样的多对多的通信
2. 容器网络实现原理
  docker 使用 iptables实现网络通信
  2.1 外部访问容器#iptables -t nat -vnl DOCKER
  外界数据包-> eth0 -DNAT-> docker0 ->veth->etho(容器) 
  DNAT:目标地址转换

  2.2 容器访问外部#iptables -t nat -vnl POSTROUTING 
  容器数据包->eth0(容器)-> veth -> docker0 -> -SNAT- eth0->外界
  SNAT:源地址转换

上次更新时间 13 3 月, 2023 at 09:59 上午