Docker - 基本命令

管理镜像

1. 搜索镜像(docker repository)

// docker search [keyword]
docker search kafka ### 搜索kafka镜像
可以根据搜索结果中的stars来选择更高stars的镜像,然后下载docker pull [镜像名]

2. 拉取镜像

docker pull centos:centos7

3. 查看本地镜像

docker images

4. 删除镜像

docker rmi kafka

==========================================

管理容器

1. 创建容器

// docker run [option] --name [self-defined container name] -p hostport:dockerport image:image tag
参数说明:
-i: 交互式操作。
-t: 终端。
-d: 后台运行,命令执行后不会进入容器
–name centos-test: 指定容器名
-p: 是容器内部端口绑定到指定的主机端口。
ubuntu: ubuntu 镜像
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

docker run -itd --name centos-test centos:centos7 ### 后台运行模式
docker run -it ubuntu /bin/bash ### 进入docker交互模式
docker run -itd --name zookeeper -p 2181:2181 wurstmeister/zookeeper ### 后台运行模式
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=10.211.55.7 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest

2. 停止容器

docker stop 558edfdfb87e ### 558edfdfb87e位容器id

3. 启动停止的容器

docker start 558edfdfb87e ### 558edfdfb87e位容器id
docker restart 558edfdfb87e ### 558edfdfb87e位容器id

4. 查看容器

docker ps ### 查看active状态的容器
docker ps -a ### 查看所有状态的容器,container id既hostname

5. 进入容器

// 1. docker attach <container id>
docker attach 558edfdfb87e ### 退出时,容器会停止

// 2. docker exec -it <container id> <command>
docker exec -it 558edfdfb87e /bin/bash ### 退出时,容器不会停止;/bin/bash为进入容器时,需要运行的命令

6. 配置容器

// 1. 如果ifconfig命令没有,则需要安装网络工具
yum install net-tools -y

7. 更新容器

docker commit -m=“net-tools upd” -a=“paul” 558edfdfb87e centos:v2
参数说明:
-m: 提交的描述信息
-a: 指定镜像作者
558edfdfb87e:容器 ID
centos:v2: 指定要创建的目标镜像名:tag

8. 删除容器

docker rm -f 558edfdfb87e ### 558edfdfb87e为容器id

==========================================

管理网络

1. 查看docker网络类型

// 查看有哪些网络类型
docker network ls

[parallels@bogon ~]$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
496bab33a156        bridge              bridge              local
9abbcffab408        host                host                local
3bc5aa895974        none                null                local
> // docker network inspect [name]

// 查看具体的网络类型内容
// docker network inspect [network type name]
docker network inspect bridge

[parallels@bogon ~]$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "496bab33a156aff59b1eef4ae1131569522330be1421b2c2fe468bc0c4ff0c02",
        "Created": "2020-03-12T15:28:29.386641728+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "d0919e40420505cd61b1f4ee61be2110952db4bf6034a4cbce0e9c3912ed7e8f": {
                "Name": "zookeeper",
                "EndpointID": "5a307346b83f5457e70c73944eedfec8c49b8a7fa008e9b887113fcefe4fbd9e",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

2. 定义docker网络

// docker network create -d [network type] --subnet=[CIDR format] [network name]
// -d:参数指定 Docker 网络类型,有 bridge, host, none。
// Docker的网络有三种类型(driver): bridge, host 和 null.

  • birdge: 就如同桥接的switch/hub, 使用bridge网络的container会分配一个当前bridge配置的子网IP, 在通过run创建container时通过 --ip 指定.
  • host: 需要使用 --network=host 参数指定. 使用主机网络, 此时 container 的网络会附属在主机上, 两者是互通的. 例如在container中的服务监听8080端口, 则主机的8080端口就会自动映射到这个端口.
  • none: 需要使用 --network=none 参数指定. 不分配局域网的IP
    可以通过命令 docker network ls 和 docker network inspect [name] 查看
docker network create -d bridge --subnet=192.168.1.1/24 host-network

3. 删除docker网络

docker network rm [network name]

docker network rm host-network

4. 定义docker IP

指定docker IP需要首先定义docker network
只有在用户自定义的网络下,才能自定义IP
docker容器有自己的默认ip,同时,还可以将该容器加入到自定义网络,那么该容器会既有一个自定义网络的IP,同时还会有一个默认IP。在自定义网络内,容器使用该网络的内部IP(自定义的IP)进行通信

docker run -itd --net bridge --ip 192.168.1.201 centos:latest /bin/bash
6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6
docker: Error response from daemon: User specified IP address is supported on user defined networks only.

在用户定义网络内,指定IP

docker run --name zookeeper -itd --net host-network --ip 192.168.1.201 wurstmeister/zookeeper /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
1ee5b46eed54c54e4e90bb4a9079de397a30c8b4dc9bb09bd364e567e651bcf7

警告WARNING: IPv4 forwarding is disabled. Networking will not work是由于在宿主机的系统配置文件中缺少ipv4 forward的配置。

修改/etc/sysctl.conf文件,添加如下内容:
net.ipv4.ip_forward=1
然后重启网络
systemctl restart network

==========================================

参考文章

docker安装kafka

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值