docket命令
服务相关命令
1.启动docket
systemctl start docker
2.停止docker服务
systemctl stop docker
3.重启docker服务
systemctl status docker
4.查看docket服务状态
systemctl status docker
5.设置开机启动docker服务
system enable docker
镜像命令:
1.查镜像:查看本地所有的镜像
docker images
docker images -q #查看所有的镜像的id
2.搜索镜像:从网络中查找需要的镜像
docker serach 镜像名称
3.拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定规则是最新版本,如果不知道镜像版本,可以去docket hub 搜索对应镜像查看
docker pull 镜像名称
4.删除镜像:删除本地镜像
docker rmi 镜像id#删除制定本地镜像
docker rmi `docker images -q` #删除所有本地镜像
容器相关命令:
1.创建容器
创建容器:docker run -it --name=c1 centos:7 /bin/bash
参数-i 表示容器一直运行着,-t表示分配一个终端, 创建以后,顺便就登陆到容器了,当ssh退出时,容器就会关闭
docker run -id --name=c2 centos:7
参数-d表示后台运行,创建以后,不会进入容器,通过ssh进入容器以后,退出容器,容器不会关闭
参数:
-i:保持容器运行,通常与-t同时使用.加入it这2个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-d:以守护(后台)模式运行容器.创建一个容器在后台运行,需要使用docker exec 进入容器.退出后,容器不会关闭
-it:创建的容器一般称为交互式容器,-id创建的容器一般称为守护式容器
--name:为创建的容器命名
2.查看容器
docker ps:查看正在运行的容器
docker ps -a#查看所有容器
3.进入容器:
docker exec 参数#退出容器,容器不会关闭
docker exec -it c2 /bin/bash
4.启动容器
docker start 容器名称
docker start c2
5.关闭容器
docker stop 容器名称
docker stop c2
6.删除容器
如果容器是运行状态则删除失败,需要停止容器才能删除
docker rm c2
删除所有容器
docker rm `docker ps -aq`
7.查看容器信息
docker inspect 容器名称
docker inspect c2
容器的数据卷
数据卷:
- .是宿主机中的一个目录或者文件
- 当容器目录和数据卷目录绑定后,对方的修改会立刻同步
- 一个数据卷可以被多个容器同时挂载
- 一个同期也可以被挂载多个数据卷
配置数据卷:
创建启动容器时,使用-v参数 设置数据卷
docker run ... -v 所主机目录文件:容器内目录文件...
注意事项:
1.目录必须是绝对路径
2.如果目录不存在,会自动创建
3.可以挂载多个数据卷
例子:docker run -it --name=c1 -v /root/data:/root/data_contailnet centos:7 /bin/bash
配置数据卷容器:
1.创建启动c3数据卷容器,使用-v参数设置数据卷
docket run -it --name=3 -volumes centos:7 /bin/sh
2.创建启动c1 c2容器,使用--volumes-from参数设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-form c3 centos:7 /bin/bash
部署mysql:
1.搜索mysql镜像
docker search mysql
2.拉取mysql镜像
docker pull mysql:5.6
3.创建容器,设置端口映射,目录映射
#在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
运行mysql:
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/confi:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
参数说明:
-p 3307:3306:将容器的3306端口映射到宿主机的3307端口
-v $PWD/conf:/etc/myql/conf.d:将主机当前目录下的conf/my.cnf古早到容器的/etc/mysql/my.cnf配置目录
-v$PWD/logs:/logs:将主机当前目录下的logs目录股灾到容器的/logs日志目录
-v$PWD/data:/var/lig/myql:将主机当前目录下的data目录挂载到容器的/var/lib/mysql数据目录
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
Tomcat部署:
1.搜索tomcat镜像
docker search tomcat
2.拉取tomcat镜像
docker pull tomcat
3.创建容器,设置端口映射,目录映射
#在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
4.启动tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
参数说明:
-p8080:8080:将容器的8080端口映射到主机的8080端口
-v $PWD:/usr/local/Tomcat/webapps:将主机中当前目录挂载到当前容器的webapps
Nginx部署:
1.搜索nginx镜像
docker search nginx
2.拉取nginx 镜像
docker pull nginx
3.创建容器,设置端口映射,目录映射
#在/root/目录下创建nginx目录用于纯粹nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
#在~/nginx/conf下创建nginx.conf文件,黏贴下面内容
vim nginx.conf
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html
nginx
参数说明:
-p 80:80:将容器的80端口映射到宿主机的80端口
-v $PWD/config/nginx.conf:/etc/nginx/nginx.conf :将主机当前目录下的/conf/nginx.conf挂载到容器的:/etc/nginx/nginx.conff配置目录
-v $PWD/logs:/var/log/nginx:将主机当前目录下的logs目录股灾到容器的/var/log/nginx日志目录
部署Redis
1.搜索redis镜像
docker search redis
2.拉取redis镜像
docker pull redis:5.0
3.创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:5.0
4,使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379
镜像制作:
Docker镜像如何制作?
1.容器转为镜像
docker commit 容器id 镜像名称:版本号 (注意容器id:通过docker ps -a 查看)
docker save -o 压缩文件名称 镜像名称:版本号
例子:docket save -o itheima_tomcat.tar itheima_tomcat:1.0
docker load -i 压缩文件名称
docket load -i itheima_tomcat.tar
2.dockerfile概念
.Dockerfile是一个文本文件
.包含一条条的指令
.每一条指令构建一层,基于基础镜像,最终构建出一个欣的镜像
.对于开发人员:可以为开发团第提供一个完全一直的开发环境
Dockerfile案例:
需求:
自定义centos7镜像.要求
1.默认登陆路径为/usr
2.可以使用vim
实现步骤:
1.定义父镜像:FROM centos7
2.定义作者信息:MAINTAINER itheima<itheima@itcast.cn>
3.执行安装vim命令:RUN yum install -y vim
4.定义默认的工作目录:WORKDIR /usr
5.定义容器启动执行的命令:CMD /bin/bash
6.构建镜像文件
docker build -f ./centos_dockerfile -t itheima_centos:1 .
Dockerfile案例:
需求:定义dockerfile,发布springboot项目
实现步骤:
1.定义父镜像:FROM java:8
2.定义作者信息:MAINTAINER itheima <itheima@itcast.cn>
3.将jar包添加到容器:ADD springboot.jar app.jar
4.定义容器启动执行的命令:CMD java -jar app.jar
5.通过dockerfile构建镜像:docker build -f dockerile文件路径 -t镜像名称:版本号
Docker Compose服务编排工具:
Docker Compose是一个编排多容器分布式部署工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止.
使用步骤:
1.利用Dockerfile定义运行环境镜像
2.使用docker-compose.yml定义组成应用的各服务
3.运行docker-compose up 启动应用
Docker Compose安装
一.安装Docker Compose
#Compose目前以及完全支持linux,max os和windows,在我们安装compose之前,需要安装Docker,下面我们以编译好的二进制包方式安装在linux系统中
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose=`uname -s`-`uname -m` -o
/usr/local/bin/docker-compose
#设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
#查看版本信息
docker-compose -version
二.卸载Docker Compose
#二进制包方式安装,删除二进制文件即可
rm /usr/local/bin/docker-compose
三.使用docker compose编排nginx+springboot项目
1.创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose
2.编写docker-coompose.yml文件
version:'3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
app:
image:app
expose:
-"8080"
3创建/nginx/conf.d目录
mkdir -p ./nginx/conf.d
4.在./nginx/conf.d目录下,编写itheima.conf文件
server{
listen 80;
access_log off;
location /{
proxy_pass http://app:8080;
}
}
5.在~/docker-compose目录下使用docker-compose启动容器
docker-compose up
6.测试访问
http://192.168.149.135/hello
Docker私有仓库搭建:
1.拉取私有仓库镜像
docker pull registry
2.启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
3.打开浏览器输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]}表示私有仓库搭建成功
4.修改daemon.json
vim /etc/docker/daemon.json
在上述文件中添加一个key,保存退出.此步让docker信任私有仓库地址,注意将私有仓库服务器ip修改为自己私有 仓库服务器真实ip
{"insecure-registries":["私有仓库服务器ip:5000"]}
5.重启docker服务
systemctl restart docker
docker start registry
二.将镜像上传至私有仓库
1.标记镜像Wie私有仓库的镜像
docker tag centos:7 私有仓库服务器ip:5000/centos:7
2.上传标记的镜像
docker push 私有仓库服务器ip:5000/centos:7
三.从私有仓库拉取镜像
拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7
容器和虚拟机的比较:
相同点:
容器和虚拟机具有相似的资源隔离和分配优势
不同:
容器虚拟化的是操作系统,虚拟机虚拟化的是硬件
传统虚拟机可以运行不同的操作系统,容器只能运行同一类型的操作系统