基础命令总结
💗下载容器镜像
docker pull 镜像image
💗查看镜像信息
docker images
💗创建容器
docker create centos 创建的容器处于 Created 状态
docker run --name qgx -it centos
docker run --name qgx2 -d centos /bin/bash -c "while true; do echo huozhene; sleep 1; done"
💗查看容器
docker ps
docker -a
💗进入容器
docker exec -it ID bash
docker attach ID
💗停止启动、重启、容器
docker stop ID/name
docker start ID/name
docker restart ID/name
💗删除容器
docker rm ID/name
docker rm $(docker ps -a -q) 所有的
docker rm -v $(docker ps -aq -f status=exited) 批量删除所有已经退出的容器
💗查看镜像历史构建记录
docker history image名称
💗删除镜像
docker rmi id/image
💗当前运行的容器执行 docker commit 命令将容器保存为新镜像
docker commit qgx qgxhttpd
💗查看指定容器的日志记录
docker logs -f qgx
💗docker镜像重命名打标签 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag httpd:latest httpd:2.0
💗我们通常希望在这种情况下容器能够自动重启。启动容器时设置 --restart 就可以达到这个效果--restart=always意味着无论容器因何种原因退出(包括正常退出),就立即重启
docker run -d --restart=always httpd
💗我们只是希望暂时让容器暂停工作一段时间,比如要对容器的文件系统快照,
dcoker host 需要使用 CPU,这时可以执行
docker pause
直到通过 docker unpause 恢复运行
Docker网络部分
💗docker inspect查看容器和镜像最详细的信息 也可以通过 --format参数来指定输出的模板格式信息
docker inspect --format '{{ .NetworkSettings.IPAddress }}' b62c230e2b91
💗查询容器IP
docker inspect qgx | grep IPAddress
💗docker在安装的时候会创建网络bridge、host、null 我们可以在创建网络时指定网络
docker run -it --network=host centos
💗我们也可以在创建容器时指定IP
docker run -it --network=host --ip=172.17.0.18 centos
💗用户也可以根据业务需要创建 user-defined 网络,提供三种 user-defined
网络驱动:bridge, overlay 和 macvlan。overlay 和 macvlan 用于创建跨主机的网络
可通过bridge 驱动创建类似前面默认的 bridge 网络,例如:
docker network create --dirver bridge qgxnetwork
我们也可以指定相应的subnet和gateway
docker network create --dirver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 qgxnetwork
docker network inspect qgxnetwork 可以查看网卡具体信息
💗容器添加一块网卡。这个可以通过docker network connect命令实现。
docker network connect qgxnetwork qgx66
💗容器可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined容器之间可以通
过 127.0.0.1 直接通信,先创建一个 httpd 容器,名字为 web1。
docker run -d -it --name=web1 httpd,再创建centos容器并通过 --network=contai
ner:web1,指定jointed容器为 web1
docker run -d -it --network=container:web1 centos
可以看到httpd和centos镜像的IP和mac地址都是一样
💗-p参数将端口暴露给主机可以被识别到
docker run -d -p 8080:80 httpd
可以通过访问该主机IP:8080访问到容器
可以通过docker port 容器ID查看影射情况
如果已经创建容器 可以以此镜像commit一个新镜像,再运行这个新镜像开启端口映射,或者;
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
Docker存储
💗挂载宿主机目录 共享目录
参数-v指定 /share是宿主机目录对应容器的/var/lib/share目录
docker run --name qgx77 -v /share:/var/lib/share -it centos
docker cp /share 容器ID:/var/lib/share
可以通过 docker volume ls 查看在主机mount点
💗docker创建的时候挂载了volume 再删除容器 docker rm -v name 如果没加-v会产生孤儿volume
💗对于孤儿 volume,可以用 docker volume rm
如果想批量删除孤儿 volume,可以执行:docker volume rm $(docker volume ls -q)
💗可以 Dockfile 构建镜像制作一个容器volume,然后多个容器之间共享同一个volume
docker run -d --volume-from (volume容器名称) centos
评论区