docker基础命令,docker网络模式!!!(代码片段)

水木,年華 水木,年華     2022-12-29     212

关键词:

一.docker镜像操作

docker run hello-world 
run :
pull        dockerhub      仓库中项目//镜像
start       hello-world-image
[root@docker ~]# docker run hello-world 
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:7d91b69e04a9029b99f3585aaaccae2baa80bcf318f4a5d2165a9898cd2dc0a1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
1、docker client客户端连接到了服务端(服务端是以一个守护进程的形式跑在操作系统里面的)restful api典型的C/s架构
2、由docker服务端的守护进程从docker hub上下载了镜像(Ps:服务端会先检查本地系统是否有这个镜像)
3、服务端创建了一个新的容器,然后从拉去的这个镜像启动了一个容器,
容器执行了脚本/可执行程序让我们可以查看/使
(client)
4、docker服务端把这些信息流(传递)返回到客户端并展示出来,(展示在终端上)
docker client可以是多种形式,比如"docker"命令工具所在的终端

二.docker命令—镜像

2.1 查看docker版本

docker -v 
docker version 
decker info  #可以查看所有运行容器的镜像数量,运行容器的版本,可以分配的CPU,总的内存等信息.docker的工作目录 /var/lib/decker

2.2 搜索镜像

docker search nginx 
——》自己制作镜像,然后上传到docker hub 上
优化:有效减少镜像大小,dockerfile 优化方向

2.3 下载镜像

默认是从docker hub

docker pull 镜像名称
例如:docker pull nginx

2.4 查看镜像列表

docker images——查看当前docker下的下载镜像信息

2.5 获取镜像信息

封装镜像的详细信息

docker inspect  镜像ID       

2.6 添加镜像标签

[root@docker docker]# docker tag hello-world:latest hello-world:lamp 

2.7 删除镜像

docker rmi    镜像名称
docker rmi    镜像标签
docker rmi  `docker images -q`  #-q 列出镜像ID

2.8 镜像导出

docker save -o  文件名镜像名

示例:

docker save -o centos_7 centos:7

2.9 镜像导入

docker load < nginx

使用场景:有的生产环境,企业不直接使用docker私有仓库,而是存放在一个ftp服务器中,按需上传下载。

[root@docker docker]# docker ps -a 
[root@docker ~]# docker ps  -aq              #只过滤出容器ID
16d885305462
[root@docker ~]# docker rm `docker ps -aq`   #批量删除

CONTAINER ID:容器ID
IMAGE:镜像版本
CRATED:创建的时间
STATUS:运行的时间
PORTS:暴露的端口
NAMES:名称(可定义)

三.docker命令—容器操作

3.1 查询容器

docker ps -a

3.2 创建容器

docker create -it nginx:latest /bin/bash
-i 让容器的标准输入保持打开
-t 分配一个伪终端
-d 后台守护进程的方式运行

3.3 启动容器

docker start  容器id

启动容器(一次性执行)

docker run centos:7 /usr/bin/bash -c ls /

3.4 停止容器

docker stop  容器ID
#状态码0:正常退出,非0值表示非正常退出,137表示主动停止退出

3.5 容器持续后台运行

[root@docker ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
93713dd63b4963c5e46748eb9c1d30741e53b885f7c1253adccd26eb4b94368b

[root@docker ~]# watch -n 2 docker ps -a

[root@docker ~]# docker rm `docker ps -aq` #不会删除正在运行的

3.6 进入容器

使用run
docker run -it nginx:latest /bin/bash         #一次性的,退出则关闭
exec(容器必须为开启状态)
docker exec -it  容器ID /bin/bash

PS:
docker run -it 会创建前台进程,但是会在输入exit后终止进程。
docker attach  会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程.
docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。

3.7 容器导出

docker export    容器ID   >   文件名
示例:
docker export   容器ID   >    nginx_a

3.8 容器导入

生成镜像

docker import      导出的文件名(容器)  指定镜像名称
示例:
docker import       nginx_a         nginx:latest
cat  文件名(容器)|  docker import - nginx : latest



3.9 删除容器

docker rm 容器ID

强制删除容器

docker rm -f 容器ID

批量删除容器

docker ps -a | awk 'print "docker rm "$1' | bash

批量删除"exit"状态的容器

for i in 'docker ps -a | grep -i exit | awk 'print $1'`; do docker rm -f $i; done

四.docker网络模式

4.1 HOST模式

host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的NetworkNamespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是dockerhost上已经使用的端口就不能再用了,网络的隔离性不好。

4.2 container 模式

创建的容器不会创建自己的网卡、设置IP等,而是和一个指定地容器共享IP、端口范围
这个模式指定新创建的容器和己经存在的一个容器共享一个network namespace,而不是和宿主机共享,新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定地容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表还是隔离的。(两个容器的进程可以通过loo 网卡设备通信)

4.3 None模式

该模式关闭了容器的网络功能
这种网络模式下容器只有lo回环网口,没有其他的网卡。none模式可以在容器创建时通过-network=none参数指定
这种类型的网络无法联网,但是封闭的网络能很好的保证容器的安全性

4.4 Bridge模式

此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker虚拟网桥,通过docker 0 网桥及iptables的nat,表配置与宿主机通信
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从docker0子网中分配一个IP给容器使用,并设置docker0 的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair 设备,Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为etho(容器的网卡),另一端放在主机中,以vethxxx,这样类似的名字命名,并将这个网络设备加入到docker0 网桥中。可以通过brctl show命令查看。
bridge模式是docker 的默认网络模式,不写-net参数,就是 bridge模式。使用docker run -p时, docker实际是在iptables,做了DNAT规则,实现端口转发功能。可以使用jptables. -t nat -vnL查看。

docker四种网络模式

host模式        -net=host                  容器和宿主机共享Network namespaceo
container模式   -net=container:NAME_or_ID  多个容器共享一个Network namespace.
none模式        -net=none容器有独立的Network,namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置IP等。
bridge模式      -net=bridge               (默认为该模式)
以上不需要动手配置,真正需要配置的是自定义网络

小结:

1、docker中有几种网络模式,分别提供哪些功能
Host container none bridge
Host :与宿主机共享网络名称空间/网络协议栈
Container:多个容器之间共享一个network namespaces
None :自闭空间
Bridge:默认模式通过Veth对 连接容器与dockerO网桥,网桥分配给容器IP,同时docker0作为“局域网”内容器的网关,最后和宿主机网卡进行通讯
2、两个容器如何通讯
Docker 0
Loo 0 (container模式)

loopback :回环网卡、TCP/IP网卡是否生效
virtualt bridge: linux自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
(示例:安装workstation(虚拟化平台)之后,会在网络适配器中会多出VWMnet1 WMnet8 VWMnet0)
docker 0 :容器的网关,绑定物理网卡,负责做NAT地址转换、端口映射
docker 0 :本身也是一种容器

docker的四种网络模式和相关网络命令等操作(代码片段)

Docker网络模式一、实现原理二、Docker四种网络模式三、Docker命令1、查看网络列表2、自定义网络固定IP3、暴露端口4、在宿主机环境执行容器内命令5、怎么把宿主机的文件传入到容器内部6、进入容器没有systemctl命令解决:添加--priv... 查看详情

docker基础篇补(代码片段)

  经过一个星期的加班到9点,终于将docker的网络部分小小的总结了一下,小编在这之前也发布过关于docker的内容,本来想就此结束,但是总感觉少了些什么,只会docker的命令,仿佛不能深入的理解docker强大之处,所以小... 查看详情

docker基础知识!(代码片段)

dockerDocker概述Docker与传统虚拟化的区别Docker原理Docker三大组件Docker网络模式DockerfileDocker镜像的分层Docker安装部署Docker命令管理镜像容器操作网络管理Docker数据卷Docker概述Docker是Linux中运行应用的开源工具,是一种轻量级的虚... 查看详情

docker基础知识!(代码片段)

dockerDocker概述Docker与传统虚拟化的区别Docker原理Docker三大组件Docker网络模式DockerfileDocker镜像的分层Docker安装部署Docker命令管理镜像容器操作网络管理Docker数据卷Docker概述Docker是Linux中运行应用的开源工具,是一种轻量级的虚... 查看详情

docker基础知识!(代码片段)

dockerDocker概述Docker与传统虚拟化的区别Docker原理Docker三大组件Docker网络模式DockerfileDocker镜像的分层Docker安装部署Docker命令管理镜像容器操作网络管理Docker数据卷Docker概述Docker是Linux中运行应用的开源工具,是一种轻量级的虚... 查看详情

《docker高级篇(大厂进阶):4.docker网络》包括:是什么常用基本命令能干嘛网络模式docker平台架构图解(代码片段)

文章目录二、高级篇(大厂进阶)4.Docker网络4.1Docker网络是什么4.2常用基本命令4.3能干嘛4.4网络模式4.4.1总体介绍4.4.2容器实例内默认网络IP生产规则4.4.3案例说明bridgehostnonecontainer自定义网络4.5Docker平台架构图解本人其他相关文章链... 查看详情

docker(代码片段)

基础的一些命令和概念Docker基础镜像有点像蛋糕模子和蛋糕的关系it模式:交互式命令行dockerrun启动容器容器一台虚拟的计算机,拥有独立的网络,计算机系统和进程;默认和宿主机不发生任何的交互dockerpull安装很方便后面的名... 查看详情

docker基础

1、docker结构:Docker客户端(DockerClient)Docker客户端(DockerClient)是用户与Docker进行交互的最主要方式。当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端。DockerClient除了连接本地服务端,通过更... 查看详情

微服务容器架构工程师

第一部分Docker与Kubernetes基础第1章Docker容器41.0什么是Docker?41.2Docker发行版本51.3Docker基本实现原理51.4Docker优势与局限性81.5容器与虚拟机区别91.6Dokcer架构与术语91.7Docker基本安装101.8DockerC/S模式131.9Docker应用程序运行条件15第2章Docke... 查看详情

docker网络模式

默认网络当你安装Docker时,它会自动创建三个网络。你可以使用以下dockernetworkls命令列出这些网络   Docker内置这三个网络,运行容器时,你可以使用该--network标志来指定容器应连接到哪些网络。 该bridge网络代表doc... 查看详情

docker网络详解(代码片段)

Docker网络Docker网络架构libnetwork中的5种内置驱动Docker原生网络bridge模式host模式none模式Docker自定义网络创建自定义网桥bridge如何让不同网段的容器可以相互通信Docker基础知识可点击查看之前文章Docker网络架构Docker有自己的网络库&#... 查看详情

docker基础:docker常用命令梳理

​今天给大家梳理一下Docker常用的命令,希望对大家有所帮助1、Docker环境信息命令dockerversion说明:用于显示docker的版本信息,包括docker客户端和docker服务端基本信息。docker-v说明:查看docker版本号包含容器、镜像统计信息dockerin... 查看详情

docker的网络介绍(代码片段)

Docker网络基础Docker启动时,会自动在主机上创建一个docker0虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机,它会而挂载到它的网口之间进行转发当创建一个Docker容器的时候,同理会创建一对vethpair接口(当数据包... 查看详情

docker基础知识和命令使用入门(代码片段)

本文介绍了Docker相关的基础知识和命令的简单使用。基础知识部分包括Docker的用途和意义,Docker的镜像、容器、仓库、Dockerfile和DockerCompose的理解,以及Docker图形管理工具Portainer的基础功能。Docker命令的使用包括镜像使用、容器... 查看详情

关于docker那点事儿——docker基础命令(代码片段)

文章目录前言一、docker安装docker配置文件详解二、常用docker命令1、dockerimage命令2、dockerrun命令3、常用命令三、docker网络1、docker修改默认网段2、不同宿主机下docker互通四、docker数据目录迁移前言官方文档:https://docs.docker.com... 查看详情

docker(十四)-docker四种网络模式(代码片段)

Docker安装时会自动在host上创建三个网络,我们可用 dockernetworkls 命令查看:none模式,使用--net=none指定,该模式关闭了容器的网络功能。host模式,使用--net=host指定,容器将不会虚拟出自己的网卡,配置自己的IP等,而是... 查看详情

docker基础:管理命令(代码片段)

...令管理网络管理容器管理服务管理节点管理插件管理命令dockernetwork:管理网络;dockercontainer:管理容器;dockerservice:管理服务;dockernode:管理Swarm节点;dockerplugin:管理插件;dockerstack:管理堆栈;dockersystem:管理系统信息;d 查看详情

docker入门基础篇(代码片段)

查看docker教学视频,请点击《狂神说java》:https://www.bilibili.com/video/BV1og4y1q7M4?p=1记得投币三连呀~~Docker学习Docker概述Docker安装Docker命令镜像命令容器命令操作命令......Docker镜像容器数据卷DockerFileDocker网络原理Idea整合DockerDockerCompose... 查看详情