安装Docker
1 2 3 4 5 6 7 8 9 10 11
| //源中有,直接yum安装 yum install docker-io -y
//查看docker版本 docker -v
//启动 service docker start
//设置开机自启 chkconfig docker on
|
配置Docker
1 2 3 4 5 6
| //设置腾讯云镜像源 echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
//重新加载服务,重启 systemctl daemon-reload service docker restart
|
安装镜像
1 2 3 4 5
| //拉取一个centos镜像 docker pull centos
//查看docker中有的镜像 docker images
|
运行镜像
1 2 3 4 5 6 7 8 9 10 11
| //运行docker容器中的centos,并使用bash shell docker run -it centos /bin/bash
//直接运行镜像 docker run -it -p port:port centos
//登录后可以按自己需要做操作 ······
//退出镜像 exit
|
保存镜像
1 2 3 4 5
| //查看容器信息,获取容器id docker ps -a
//保存 docker commit -m="你的备注" 容器id 镜像id
|
打包镜像
1 2 3 4
| docker build -t imageName .
// 查看镜像 docker images | grep imageName
|
删除镜像
1 2 3 4 5 6 7 8 9 10 11 12 13
| docker images docker rmi imageid
// 如果已经运行,先删除容器id docker ps -a docker rm containerid docker rmi imageid
// 如果有镜像from该镜像,先删除子镜像(报image has dependent child images) // 查看有哪些依赖子镜像 docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=*****) // 删除子镜像 docker rmi *** *** ***
|
Tips:
如果镜像被覆盖,导致后面的tag为<none>
,无法对其进行操作的话:
docker tag imgId xxxxx
docker rmi xxxxx
导入、导出镜像
1 2 3 4 5 6 7
| docker export -o xxx.tar xxxid(容器id) cat xxx.tar | docker import - xxxname(镜像名xxx/xxx:1.0)
docker save -o xxx.tar xxxid(容器id) docker load -I xxx.tar
|
镜像仓库
1 2 3 4 5 6 7 8
| docker login hub.yun.***** -u xxx
docker push imageName
docker search imageName
|
Dockerfile语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| //拉取基础镜像 FROM <IMAGE>
//设置镜像作者 MAINTAINER <NAME> <EMAIL>
//为后续的 RUN 、 CMD 、 ENTRYPOINT 指定工作目录 WORKDIR <PATH>
//创建镜像时执行 RUN <COMMAND>
//镜像创建成功后,在镜像中执行。如果有多条,只执行最后一条。可被docker run覆盖 CMD ["executable", "param1", "param2"]使用exec执行,推荐 CMD command param1 param2,在/bin/sh上执行 CMD ["param1", "param2"] 提供给ENTRYPOINT做默认参数。
//与CMD类似。不可被docker run覆盖,除非加上--entrypoint ENTRYPOINT command param1 param2
//复制,src可以为Dockerfile所在目录的相对路径,也可以是url。如果是url,会下载并复制到dest;可自动解压 ADD <SRC> <DEST>
//复制,src为Dockerfile所在目录的相对路径 COPY <SRC> <DEST>
//容器暴露的端口号。多个以空格间隔 EXPOSE <PORT>
//设置环境变量 ENV <KEY> <VALUE>
//指定运行容器时的用户名或UID,后续的RUN、CMD、ENTRYPOINT使用该用户 USER daemon
//在主机上创建一个挂载,挂载到容器的指定路径。不如docker run -v强大 VOLUME <PATH>
//其他镜像FROM该镜像时,执行 ONBUILD [INSTRUCTION]
|
举个🌰
1 2 3 4 5 6 7 8 9 10 11
| FROM centos MAINTAINER nobody "xx@163.com" RUN mkdir -p /opt/jdk/ RUN mkdir -p /opt/tomcat/ ADD jdk1.7.0_79 /opt/jdk/ ADD tomcat /opt/tomcat/ ENV CATALINA_HOME /opt/tomcat ENV JAVA_HOME /opt/jdk EXPOSE 8080 ENV PATH $PATH:$JAVA_HOME/bin CMD ["/opt/tomcat/bin/catalina.sh","run"]
|