windows 下使用的一些注意事项:
如果使用 windows 下运行 docker 所谓 “宿主机”
指的是你的 virtual-box
而不是你真正的物理机,如果你在 container 里面暴露的某个端口,
很可能在物理机上访问不到,你还需要在 virtual-box
层再做一次转发. 你通过 -v 指定的挂载目录必须是 virtual-box
中指定的共享目录之一,否则无效!!!__
查看 docker 相关信息
# 查看docker版本
$docker version
# 显示docker系统的信息
$docker info
Docker Hub 相关信息
# 登录docker Hub
docker login
# 登陆registry server;
# -e, --email="" Email;
# -p, --password="" Password;
# -u, --username="" Username
docker login --username=xxx@xxx.com registry.cn-hangzhou.aliyuncs.com
# 从 dockerhub 上拉取 centos 镜像 默认tag 是 latest
docker pull centos
image 的相关操作
# 检索 image
$docker search image_name
# 下载 image 到本地
$docker pull image_name
# 列出镜像列表;
# -a, --all=false Show all images;
# --no-trunc=false Don't truncate output;
# -q, --quiet=false Only show numeric IDs
$docker images
# 删除一个或者多个镜像;
# -f, --force=false Force;
# --no-prune=false Do not delete untagged parents
$docker rmi image_name
# 显示一个镜像的历史;
# --no-trunc=false Don't truncate output;
# -q, --quiet=false Only show numeric IDs
$docker history image_name
# 删除指定镜像
docker rmi <image_name>
# 删除所有镜像
docker rmi $(docker images -q)
container(沙箱容器)相关 .
# 已交互式方式 启动一个容器
docker run -it <image_name> /bin/bash
# 将容器的 80 映射到本机的 8080
docker run -p 127.0.0.1:8080:80 <image_name> /bin/bash
# 将容器的 1000-1020 这 20 个端口批量映射到 映射到本机的 1000-1020
docker run -p 1000-1020:1000-1020 <image_name> /bin/bash
# 将物理机的 /c/Users/myname/cent32 映射到容器的 /mnt 但要注意物理机目录必须是 vm 的共享目录。
docker run -it -v /c/Users/myname/cent32:/mnt <container_name> /bin/bash
#查看 容器的 5000 端口上绑定的本机端口是什么
docker port <container_name> 5000
# 启动容器以后台方式运行(更通用的方式):
docker run -d -it <image_name>
# 进入容器
docker attach <container_name>
# 在容器内运行某程序
docker exec -ti <container_name> /bin/bash
# 启动 从启 关闭 一个容器
docker start|stop|restart <container_name>
# 删除指定容器
docker rm <container_name>
# 删除所有容器
docker rm `docker ps -a -q`
容器固化(container 固化成 image)
# 固化 <container_name> 携带版本信息
docker save <container_name> > /home/save.tar
# 从save的 tar中还原
docker load < /home/save.tar
# 固化 <container_name> 不携带版本信息
docker export <container_name> > /home/save.tar
# 从export的 tar中还原
docker import /home/save.tar
# 固化当前container的修改
docker commit -m "comment" -a "author" <container_name> 用户名/输出的镜像名:tag
# 构建自定义镜像
docker build -t <image_name> <dockerfile>
与宿主间通信
# 内外层之间copy文件
docker cp foo.txt mycontainer:/foo.txt
docker cp mycontainer:/foo.txt foo.txt
# 用-v挂载主机数据卷到容器内
docker run -v /path/to/hostdir:/mnt <container_name>
## 在容器内拷贝
cp /mnt/sourcefile /path/to/destfile
更多文档 https://docs.docker.com/engine/reference/commandline/cli/