Docker技术。
目录:
1.什么是Docker
2.理解Docker
3.走进Docker
4.Hello World
5.Nginx服务
6.docker化的java web。
1.什么是Docker?
2.Docker思想。
集装箱 运输方式
标准化 存储方式
隔离 API接口
3.Docker解决了什么问题?
我本地运行没问题啊!
系统好卡,哪个哥们又写死循环了?
双11来了,服务器撑不住啦!
4.走进Docker。镜像(集装箱),仓库(超级码头),容器(运行程序的地方)。
Build构建镜像,Ship运输,Run运行容器。
Docker镜像。(一系列的文件)
Docker容器。(本质就是一个进程)
Docker仓库。(hub.docker.com、c.163.com)
5.window下安装Docker。
http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ (下载地址)
http://pan.baidu.com/s/1qYyc0ag (boot2docker.iso下载地址)
https://c.163yun.com/hub#/m/home/ (查看镜像的地址。)
6.第一个docker镜像。(hello-world)
docker pull [OPTIONS] NAME[:TAG]
docker images [OPTIONS] [REPOSITORY [:TAG]]
docker run [OPTIONS] IMAGE [:TAG] [COMMAND] [ARG...]
docker ps (查看镜像运行的进程)
docker pull hello-world (下载hello-world镜像)
docker images (查询本地的镜像)
docker version (查询docker的版本)
docker run hello-world (运行镜像)
7.运行一个nginx镜像。(nginx)
持久运行的容器;前台挂起&后台运行;进入容器内部。
下载地址:docker pull hub.c.163.com/library/nginx:latest
运行nginx:docker run hub.c.163.com/library/nginx (前台运行)
docker run -d hub.c.163.com/library/nginx
指定端口运行
docker run -d -p 8080:80 hub.c.163.com/library/nginx (指定端口8080,80)
docker run -d -P hub.c.163.com/library/nginx (随机端口)
docker ps 可以查看到nginx运行的container的id
docker exec -it 容器id (进入容器里面,类型linux目录) bash
exit (退出容器)
docker stop 容器id
8.Docker网络。
网络类型:
Bridge Host None
端口映射:
查看端口是否被监听:
netstat -na|grep 8080
9.制作自己的镜像
Dockerfile
docker build
Jpress: http://jpress.io/
Dockerfile文件:
from hub.c.163.com/library/tomcat (是以tomcat为一个起点)
MAINTAINER llsydn 1091391667@qq.com (镜像所有者)
COPY D:/ddmh-1.0.0.jar /usr/local/tomcat/webapps (运行命令)
然后执行docker build -t (镜像的名称) . ( . 的作用是将本目录下的所有文件传递给docker容器)
Dockerfile语法:
from base image
run 执行命令
add 添加文件
copy 拷贝文件
cmd 执行名称
expose 暴露端口
workdir 指定路径
maintainer 维护者
env 设置环境变量
entrypoint 容器入口
user 指定用户
volume mount point
特别注意:
每次启动Docker Quickstart Terminal的时候,一开始会告诉我们docker is configured to use the
default machine with IP 192.168.99.100(xxx.xxx.xx.xxx)
所以要访问docker里面启动的服务的时候,需要用这个ip去访问对应的应用。
10.安装mysql步骤。
10.1下载mysql的镜像:docker pull hub.c.163.com/library/mysql:latest
10.2启动mysql:docker run -d hub.c.163.com/library/mysql。
注意,这样的启动,再打印docker ps是找不到该进程的,因为启动报错了。
可以使用docker logs -f 容器id,会出现以下错误:error: database is uninitialized and password option is not
specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and
MYSQL_RANDOM_ROOT_PASSWORD,这里会提示我们要给定MYSQL_ROOT_PASSWORD,root用户的密码。
所以启动命令是: docker run -e MYSQL_ROOT_PASSWORD=xxxxxx --name MySQL -d hub.c.163.com/library/mysql