如何写Dockerfile参考:
http://dockone.io/article/131
https://docs.docker.com/engine/reference/builder/
相关主机和地址
主要命令
查看本地已有镜像
docker images
如:
10.10.36.213:root
@
docker-registry
:/root/Dockerfile/jetty/jetty-1.8.45]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
10.10.36.213/library/tdaajdk7 v1.13 73c1db03b30c 3 hours ago 696.2 MB
10.10.36.213/library/tdaajdk7 v1.11 99268829471a 19 hours ago 696.2 MB
10.10.36.213/library/tdaajdk7 v1.10 b5308b7f7c41 20 hours ago 696.2 MB
10.10.36.213/library/tdaajdk7 v1.9 0818f66669cb 20 hours ago
616.8 MB
build镜像
在Dockerfile所在目录执行
docker build -t 10.10.36.213/library/你的镜像名:版本 .
别忘了最后的点,用来指定Dockerfile的位置
build过程类似这样:
cos@controller
~/Dockerfile/eureka $
docker build -t 10.10.36.213/library/test:v1.0 .
Sending build context to Docker daemon 78.69 MB
Step 1 : FROM 192.168.16.100/jdk8:8u74
---> d84b155276a9
Step 2 : MAINTAINER jingchaosong [email protected]
---> Using cache
---> 369126ee2c40
Step 3 : ADD eureka-server-1.1-SNAPSHOT.jar /root/
---> Using cache
---> cd3facb762b3
Successfully built cd3facb762b3
push镜像
docker push 10.10.36.213/library/你的镜像名:版本
如果出现push失败的情况,并且提示需要的登录,请使用以下命令login到私有镜像仓库
docker login 10.10.36.213
用户名admin
密码Harbor12345
email可以不填
run容器
直接以daemon方式运行
docker run -d --net=mynet 10.10.36.213/library/你的镜像名:版本 命令
--net=mynet是让docker调用我们自己的网络插件来分配IP地址,IP地址从我们自己配置的IP池里获取
查看启动的容器的IP地址可以用以下命令
docker inspect container_id | grep IPAddress
交互方式运行
docker run -it --net=mynet 10.10.36.213/library/你的镜像名:版本
docker run的时候可以加很多参数,如容器的资源配额限制、hostname、挂载本地目录、DNS等配置,请参看docker run --help
查看容器状态
查看正在运行的容器的状态
docker ps
查看所有容器(包括已经Exit容器的状态)
docker ps -a
删除容器
docker rm container_id
container_id只需要前几位字符就可以了,只要能够区别不同容器即可,不需要输入全部ID字段
强制删除容器
docker rm -f container_id
删除镜像
docker rmi image_id
进入容器内部
前提是必须是正在运行的容器
docker exec -it container_id /bin/bash
运行exit退出
查看容器详细信息
docker inspect container_id
可以看到容器的配置信息和挂载的本地目录、网络配置、状态等
镜像制作注意事项
Dockerfile与打包镜像所需的资源都放在同一目录下,如果add tar.gz包,build镜像的时候,tar包可以自动解压到对应目录中,添加目录的话使用./xxx /dir/to/des/
目前的docker集群使用swarm手动管理,在10.10.36.213上run的容器实际上上运行在10.10.0.85或86这两台主机上。
使用docker info可以查看这两台主机的信息