- docker build
- 基于Dockerfile,creates a Docker image
- 使用-t选项,为新创建的image,添加一个tag,作为句柄来引用
- Where is your built image?
- It’s in your machine’s local Docker image registry
- 使用docker images查看
- docker run
- 指定image name,启动Container
- port map(端口映射)
- 使用-p os_port:container_port 选项,map a port of container to a port of OS
- 当使用 EXPOSE port within the Dockerfile,才需要
- 使用-p os_port:container_port 选项,map a port of container to a port of OS
- docker container stop
- 关闭Container
- 注意:官网例子 运行出错。。问题可能出来python和pip的版本上。
- 所以修改Dockerfile,将python:2.7-slim 修改为python:3.4,问题解决
- DockerHub机制
- 类似GitHub机制,实现push image 、pull image
- 从而可以像git可以get code anywhere一样,让已定制好的app 可以 run anywhere
- A registry is a collection of repositories,
- and a repository is a collection of images
- —sort of like a GitHub repository,
- 使用国内 registry-mirror
- 鉴于DockerHub服务位于国外,以及GFW的原因,
- 必须使用Docker国内的Registry服务
- 使用网易云 Docker Registry
- 类似于git.oschina.net的代码托管服务。
- 网易云Docker Registry,提供镜像托管服务。
- 可以直接搜索使用公有镜像,也可以自定义私有镜像,并push托管。
- 登录网易云Docker Registry
- docker login -u {你的网易云邮箱账号或手机号码} -p {你的网易云密码} hub.c.163.com
- 注意: 使用加速器将会提升您在国内获取Docker官方镜像的速度!
- 但是使用网易云的Docker Registry,就不需要了
- 鉴于DockerHub服务位于国外,以及GFW的原因,
- 推送本地镜像到远程Docker Registry
- 登录远程Docker Registry
- docker login
- 标记本地镜像
- docker tag {镜像名或ID} [registry_server]/{repository名}[:tag]
- 使用tag,常用于,将本地镜像命名为特定远程镜像名,从而发布出去(Publish/push)
- 推送至远程Docker Registry
- docker push [registry_server]/{repository名}[:tag]
- 登录远程Docker Registry
- 完整镜像名 [registry_server]/{repository名}[:tag]
- 多个镜像名可以指向一个物理镜像(Image ID)
- registry_server缺省,则默认是Docker Public Registry Server(docker.io)
- 猜测端口应该是约定的
- 如果repository路径只有一级,例如hello-world,则默认补全为library/hello-world
- 通常repository由两级构成【username/repository】
- tag缺省,默认为latest
- 远程Registry中,相应tag不存在则新建,存在则覆盖
- 在本地运行docker命令,指定镜像名时,
- 如果没有,会补全为完整镜像名,去远程获取
- 删除镜像:
- docker rmi 或者docker image rm
- 指定镜像名并且其Image ID下还存在其他镜像名时
- 仅仅untagged 该镜像名。。实际的物理镜像并未删除
- 通常,一个image,专用于一个app的构建
- 一个repository,专用于一个app的不同版本的构建(tag代表版本)