目 录CONTENT

文章目录

Docker常用命令总结

所念皆星河
2020-01-05 / 0 评论 / 0 点赞 / 11 阅读 / 3037 字

基础命令总结

💗下载容器镜像
 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
0

评论区