架构
客户端
| client 运行docker开头的命令
服务引擎
docker是管理容器的引擎
容器
| container
镜像
| images
仓库
| docker hub
docker的安装
运行机制
1.Docker启动服务
2.下载镜像
docker pull 镜像名称:镜像版本号
| 版本号不是必选,可配置
3.启动该镜像到一个容器
docker run 容器id/名称
| 前台运行
docker run -d 容器id/名称
| 后台运行
4.容器里面运行我们想要的程序
docker images
| 查看所有镜像
ps -ef | grep tomcat
客户端访问并启动运行容易
docker run -d -p 8080:8080 tomcat
| 将宿主机(服务器)的80端口映射到docker容器内的80端口
进入容器中的应用
docker exec -it containerid bash
| -i 交互式的,保持标准输入流打开
| | | -t 表示虚拟控制台,分配到一个虚拟控制台
关闭容器
docker stop containid
查询所有运行的容器
docker ps
镜像
是一个只读的模板,把别人或者自己制作好的镜像直接拿来使用
组成结构
下载镜像
docker pull
删除镜像
docker rmi 镜像id/名称
容器
启动
通过镜像启动容器
| docker run -d redis
将终止状态的容器重新启动
| 查询所有容器 docker ps -a
| | | docker start 容器id/名称
停止容器
docker stop 容器id/名称
|
开始容器
docker start容器id
|
删除容器
docker rm 容器id/名称
| 先停掉容器然后再删除的
查看容器
docker ps
docker ps -q
docker ps -a
查看容器的更多信息
docker inspect 容器id/名称
停止所有容器
docker stop $(docker ps -q)
删除全部容器
docker rm $(docker ps -aq)
停止并删除所有容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
仓库
最大的公开仓库
| https://hub.docker.com/
查找镜像
docker search 镜像名称
下载指定来源镜像
docker pull 名称/镜像名称
| 下载阿里云镜像docker pull aliyun/Nginx
redis
默认端口 6379
使用示例
Docker 安装Mysql
下载mysql镜像
docker pull mysql
docker run -t 3306:3306 -e MYSQL_DATABASE=workdb -e MYSQL_ROOT_PASSWORD=123456 -D mysql:latest
docker ps
查找mysql位置
which mysql
进入容器
docker exec -it 容器id bash
登录mysql
mysql -uroot -p
show database
use workdb
show table
修改密码
ALTER USER "root "@''localhost" IDENTIFIED BY "123456"
授权远程登录访问
CREAT USER 'user1'@'%' IDENTIFIED WITH mysql_native_password BY '123456'
| 给用户user授权
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%'
| 任何情况下,都可以通过user1的账号进行访问
Docker 安装 zookeeper
查找本地镜像
下载zookeeper镜像
关联端口启动镜像
进入容器
Docker 安装Nginx
查看本地镜像
docker images
下载Nginx镜像
docker pull Nginx
docker run -p 80:80 nginx/镜像id
进入容器
dcoker exec -it 镜像id bash
浏览器访问Nginx
localhost:80
Nginx部署静态网站
将linux的文件拷贝到docker某个容器目录下
docker cp [/root/test.html] 容器名称:容器中具体目录
Docker 安装ActiveMq
没有官方镜像的情况
下载指定贡献者的ActiveMq镜像
docker pull webcenter/activemq
docker run -p 9161:8161 activemq
启动镜像
进入容器
使用Docker自定义镜像
认识Dockerfile文件
基础镜像信息
维护这信息系
镜像操作指令
容器启动时执行指令
制作JDK镜像
dockerfile内容
FROM centos:latest
MAINTAINER<namei>
| 镜像作者是谁
ADD jdk-8u121-linux-x64.tar.gz /usr/local
| 复制指定的源到容器当中去
ENV JAVA_HOME usr/local /jdk1.8.0_211
| 指定一个环境变量,会被后续run指令使用,并在容器运行时保持
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $Path:$JAVA_HOME/bin
CMD java -version
| 指定启动容器时执行的命令,每个dockerfile只能有一条CMD命令
构建镜像
docker build -t 镜像名称:镜像标签
运行容器
制作Tomcat镜像
定义dockerfile文件
FROM centos:latest
| 从哪个镜像继承过来,用哪个镜像作为基础镜像
MAINTAINER<namei>
| 镜像作者是谁
ADD apache-tomcat-8.5.24.tar.gz /usr/local
| 复制服务器中指定的源到容器当中去
ENV CATALINA_HOME usr/local /apache-tomcat-8.5.24
| 指定一个环境变量,tomcat本身的,会被后续run指令使用,并在容器运行时保持
ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/lib
| 指定环境变量 $PATH 是linux本身的PATH;$CATALINA_HOME/lib:$CATALINA_HOME/lib是tomcat本身的PATH
🎯EXPOSE 8080
| 告诉docker服务端容器暴露的端口号,在启动容器的时候需要通过-p映射端口,docker主机会自动分配一个端口转发到指定的端口
| | |
CMD /usr/local/apache-tomcat-8.5.24/calalina.sh run
构建镜像
docker build -t wangjy166-tomcat-8.5.24 .
| ‘’.‘’表示使用当前目录下的dockerfile进行构建
运行镜像
docker run -d -p 8080:8080 镜像id
| -d为后台运行,可以不写,直接前台运行
制作mysql镜像
定义dockerfile文件
FROM centos:centos6
| 从哪个镜像继承过来,用哪个镜像作为基础镜像
| | | 最新的centos可能mysql的支持不是很好,所以指定6
MAINTAINER<namei>
| 镜像作者是谁
🎯RUN yum install mysql-server mysql -y
| 安装mysql服务端和客户端
yum install
| 安装软件
mysql-server mysql
| 服务端和客户端,空格分割
-y
| 自动确认
RUN /etc/init.d/mysqld star &&\ mysql -e "grant all privileges on *.* to ‘root@%’ identifield by '123456' WITH GRANT OPTION;"&&\ mysql -e "grant all privileges on *.* to ‘root@localhost ’ identifield by '123456' WITH GRANT OPTION;"&&\ mysql -uroot -p 123456 -e "showdatabase"
| 执行命令,命令行中如果需要换行 使用\ 进行连接
\ mysql -e "grant all privileges on *.* to ‘root@%’ identifield by '123456' WITH GRANT OPTION;"&&
| 给所有用户授权root用户,并将root密码设置为123456,%是任何ip都可以访问mysql的
\ mysql -e "grant all privileges on *.* to ‘root@localhost ’ identifield by '123456' WITH GRANT OPTION;"&&
| @localhost 本地操作mysql,是具备所有mysql的权限的
EXPOSE 3306
CMD /usr/bin/mysqld_safe
构建镜像
docker build -t wangjy166-mysql .
运行镜像
docker run -d -p 3306:3306 镜像id
制作redis镜像