列出机器上的镜像:docker images
从docker registry server 中下拉image或repository(pull)
Usage: docker pull [OPTIONS] NAME[:TAG]
docker pull centos
上面的命令需要注意,在docker v1.2版本以前,会下载官方镜像的centos仓库里的所有镜像,而从v.13开始官方文档里的说明变了:will pull the centos:latest image, its intermediate layers and any aliases of the same id,也就是只会下载tag为latest的镜像(以及同一images id的其他tag)。
也可以明确指定具体的镜像:
docker pull centos:centos6
当然也可以从某个人的公共仓库(包括自己是私人仓库)拉取,形如docker pull username/repository<:tag_name> :
docker pull seanlook/centos:centos6
如果你没有网络,或者从其他私服获取镜像,形如docker pull registry.domain.com:5000/repos:
docker pull dl.dockerpool.com:5000/mongo:latest
重启:docker restart 容器id
删除容器:docker rm [-f] 容器id
,-f代表强制删除
删除镜像:docker rmi [-f] 容器id
,-f代表强制删除
列出全部容器:docker ps -a
列出全部在运行的容器:docker ps
解决docker ps显示信息不全: docker ps --no-trunc
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
选项说明(docker run --help
)
• -d,后台运⾏容器
• -e,设置环境变量
• --expose / -p 宿主端⼝:容器端⼝
• --name,指定容器名称
• --link,链接不同容器,比如想要连接数据库,可以指定这个容器名称
--link mysql
• -v 宿主⽬录:容器⽬录,挂载磁盘卷
• --network 指定网桥
例子:
docker run -d -p 9096:9096 --name 容器名称 -network 网桥名称 镜像名称
docker exec -it 0738ed2fe68b /bin/bash
docker inspect 614063479d7f | grep Mounts -A 20
不指定dockerfile名称,默认是Dockerfile
docker build -t 镜像名称:latest .
FROM tomcat:latest
MAINTAINER mashibing.com
WORKDIR /usr/local/tomcat/webapps
ADD docker-web ./docker-web
FROM centos #制作基准镜像(基于centos:lastest)
FROM scratch #不依赖任何基准镜像base image
FROM tomcat: 9.0.22-jdk8-openjdk
尽量使用官方提供的Base Image
MAINTAINER mashibing.com
LABEL version = “1.0”
LABEL description = “马士兵教育”
WORKDIR /usr/local # 切换到这个目录下
WORKDIR /usr/local/newdir #自动创建
尽量使用绝对路径
ADD hello / #复制到根路径
ADD test.tar.gz / #添加根目录并解压
ADD 除了复制,还具备添加远程文件功能
ENV JAVA_HOME /usr/local/openjdk8
RUN ${JAVA_HOME}/bin/java -jar test.jar
尽量使用环境常量,可提高程序维护性
将容器内部端口暴露给物理机
EXPOSE 8080
docker run -p 8000:8080 tomcat
RUN : 在Build构建时执行命令
ENTRYPOINT : 容器启动时执行的命令
CMD : 容器启动后执行默认的命令或参数
RUN yum install -y vim #Shell 命令格式
RUN [“yum”,“install”,“-y”,“vim”] #Exec命令格式
使用Shell执行时,当前shell是父进程,生成一个子shell进程
在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。
使用Exec方式,会用Exec进程替换当前进程,并且保持PID不变
执行完毕,直接退出,并不会退回之前的进程环境
ENTRYPOINT(入口点)用于在容器启动时执行命令
Dockerfile中只有最后一个ENTRYPOINT会被执行
ENTRYPOINT [“ps”] #推荐使用Exec格式
CMD用于设置默认执行的命令
如Dockerfile中出现多个CMD,则只有最后一个被执行
如容器启动时附加指令,则CMD被忽略
CMD [“ps” , “-ef”] #推荐使用Exec格式
创建网桥以后,将容器和网桥关联,可以实现内部的互联互通
查看网络的具体命令:
docker network --help
查看网桥:
docker network ls
创建网桥:
docker network create -d bridge 网络名称
将容器连接到网桥
docker network connect 网桥名称 容器名称
Docker环境信息 — docker [info|version]
容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [build|images|rmi|tag|save|import|load]
容器资源管理 — docker [volume|network]
系统日志信息 — docker [events|history|logs]