title: docker的基本用法
学习要有目的性。
镜像基本操作
获取镜像
docker pull ubuntu:16.04
运行镜像
docker run -it --rm \
ubuntu:16.04 \
bash
- -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
- -rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
- ubuntu:16.04:这是指用 ubuntu:16.04 镜像为基础来启动容器。
- bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
列出镜像
docker image ls
镜像删除
删除所有仓库名为 redis 的镜像:
$ docker image rm $(docker image ls -q redis)
虚悬镜像删除
docker image prune
DockerFile
- 编写Dockerfile
FROM tomcat
WORKDIR /usr/local/tomcat/webapps
COPY ./demo.war .
WORKDIR /usr/local/tomcat
EXPOSE 8080
这一个就需要工作经验了。需要经常写,写了一个简单的例子
FROM:以tomcat为基础镜像,from是dockerFile必须的,且放到开头
WORKDIR: 是将默认的工作路径变为/usr/local/tomcat/webapps,因为下面需要将war包放到webapps下进行部署
COPY: 复制**上下文路径的demo.war(.是上下文的意思,就是dockfile所在的文件夹)**到当前文件夹(上一步将工作路径改变了,默认为webapps)
将工作路径变回原样
EXPOSE: 端口,仅仅是个说明,方便别人阅读
- 根据dockerfile构建镜像
docker build [选项] <上下文路径/URL/->
docker build -t tomcat:v1 .
当构建的时候,用户会指定构建镜像上下文的路径,docker build 命令得知这个路径后,会将路径下的所有内容打包,然后上传给 Docker 引擎。这样 Docker 引擎收到这个上下文包后,展开就会获得构建镜像所需的一切文件。
现在就可以理解刚才的命令 docker build -t nginx:v3 . 中的这个 .,实际上是在指定上下文的目录,docker build 命令会将该目录下的内容打包交给 Docker 引擎以帮助构建镜像。
docker容器
启动容器
$ docker run -t -i ubuntu:14.04 /bin/bash
启动终止容器
docker container start 容器ID
守护态运行
通过添加 -d 参数来实现
终止容器
docker container stop
进入容器
docker exec -it 69d1 bash
删除容器
docker container rm :删除一个终止状态的容器;要删除一个运行中的容器,添加 -f 参数
docker container prune : 清理掉所有处于终止状态的容器
数据管理
数据卷
数据卷是可供一个,多个容器共同使用。共享数据,数据持久化。通过-v 宿主机:容器
参数实现。
$ docker run -d \
-p 8081:8080 \
-v /usr/local/docker/tomcatIndex:/usr/local/tomcat/webapps/ROOT \
tomcat
- -d 后台运行
- -P 大P为随机端口映射,小p需配置端口映射
- -v 宿主机:容器 , 挂载主机数据卷
docker-compose
dokcer-compose用于快速部署分布式应用。是容器和容器之间的相互配合。由python编写。
- 创建docker-compose.yml。yml语言不能用tab,必须空格
- 简单应用cmpose启动一个8080的tomcat
version: "2"
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- "8080:8080"
- 启动compose。 docker-compose up (参数-d后台运行)
- 关闭容器 docker-compose dowm
- 查看日志 docker-compose logs tomcat
未完