目录
管理镜像
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
==========================================