docker
镜像操作
查看本地镜像
1 | $ docker images |
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest c54a2cc56cbb 9 weeks ago 1.848 kB
在线查找镜像:
1 | $ docker search tomcat |
通常第一条为官方镜像,即Docker Hub中的镜像。官方镜像会在OFFICIAL一列显示[OK]字样,另外,STARS一列的星星数量显示了该镜像的受欢迎程度,星星越多,表明用的人越多,不过为安全起见,通常建议首选官方镜像或自制镜像,而不是第三方的。
拉取镜像
使用docker pull [镜像名称[:版本]]可以拉取一个镜像:
注: 完整的镜像名称由[repository]/name:[tag]构成,[repository]为仓库,如果省略,则默认为library,即从Docker Hub拉取;如果省略tag,则默认拉取latest版本,name为镜像名称,不能省略。
1 | $ docker pull tomcat:7 |
一个好的实践是,拉取镜像时,总是指定一个明确的版本,这样能确保在接下来的使用中,明确知道使用的是哪个版本。因为latest版本总是指向最新的版本,这将造成不确定性。
删除镜像
删除一个镜像前,需要先停止使所有用它的容器,否则会报错,或者使用 -f选项强制删除。
1 | $ docker rmi tomcat:7 |
导入导出镜像
导出镜像:
1 | docker save 镜像 > /root/xx.tar.gz |
导入镜像:
1 | $ docker load < /root/xx.tar.gz |
制作镜像
1 | docker commit 容器名称或者容器ID 新镜像名称 |
容器操作
创建容器
以交互方式启动容器:
1 | docker run -it --name 容器名称 镜像 /bin/bash |
以守护进程方式启动容器:
1 | docker run -d --name 容器名称 镜像 |
Example:1
$ docker run -d --name tomcat001 -p 8081:8080 tomcat:7
其中,-d 指定容器在后台运行;–name用于指定容器的名称;-p 8888:8080 用于将容器内的8080端口映射到主机的8081端口,你也可以换成其他本机端口.如果需要,你可以创建多个容器使用,需要注意的是,本机映射的端口不能重复,name也不能重复。
查看当前容器
1 | $ docker ps 查看正在运行的容器 |
查看容器日志
使用 docker logs 容器名称可以查看容器的日志输出,-f选项可以指定实时输出最新日志,类似于Linux 下的tail -f命令。
1 | $ docker logs -f tomcat001 |
停止容器
1 | $ docker stop tomcat001 |
启动容器
1 | $ docker start tomcat001 |
删除容器
删除一个容器前,需要先停止容器,否则,需要使用 -f选项强制删除(不推荐)。1
$ docker rm tomcat001
删除所有容器:
1 | docker rm 'docker ps -a -q' |
搭建Tomcat服务
1 | docker run -d --name my-tomcat -p 8888:8080 镜像 |
说明:
8888端口是宿主机的端口
8080端口是容器内的端口
部署web应用
- 将war包上传到宿主机器
通过docker cp命令将宿主机器的war包上传到容器中tomcat的webapps目录下。
1
docker cp /root/docker.war 容器名称或者容器ID:/usr/local/tomcat/webapps
tomat会自动热部署,直接访问web应用的路径即可。
做成shell
创建dkcp.sh
1 | #!/bin/bash |
.bash_profile中1
alias dkcp="bash $HOME/shell/dkcp.sh" #$1 war包路径, $2 容器名 or 容器id
docker 后台运行和进入后台运行的容器
1 | docker exec -it ContainerName /bin/bash |
exec的 用exit也不会真正退出容器继续后台运行 用name或id都可以
1 | docker exec -it ContainerName Command |
是执行完命令就退出放在后台比如 ps -ef 显示内容然后就退出前台 如果要进入容器就用/bin/bash
前提是容器要正在运行 如果不是running就先 docker start containername