安装
1、yum 包更新到最新
yum update
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
3、 设置yum源
yum-config-manager --add-repo download.docker.com/linux/cento…
4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
5、 查看docker版本,验证是否验证成功
docker -v
镜像
- 常用的docker命令:
- 拉取镜像:
-
- docker pull nginx
- 查看镜像:
-
- docker images ls -a
- 使用dockerFile 构建镜像
-
- yeasy.gitbook.io/docker_prac…
- 创建DockerFile
- 编写DockerFile
- 在Dockerfile所在的目录构建镜像:
-
- docker build -t nginx:v3 .
- 正确理解此处【.】的含义,此处是指构建的上下文所在的路径,一般是创建空白的文件夹,然后在空白的文件夹中创建Dockerfile, 如果需要哪些文件,则将需要的文件复制到此空白文夹中。
- 同时构建也支持从远程URL中构建;使用tar压缩包构建;使用标准输入构建等。【如果发现标准输入的文件格式是 gzip、bzip2 以及 xz 的话,将会使其为上下文压缩包,直接将其展开,将里面视为上下文,并开始构建。】
- 查看镜像是否构建成功 - docker 删除: - docker rmi <镜像id或者容器名称>
容器
- 创建容器
- -i:一直运行
- -t:交互式运行
- -d 后台运行的容器,如果不使用后台运行则exit后会退出当前容器。
- /bin/bash 使用bash的shell交互
- 启动镜像:
-
- $ docker run --name webserver -d -p 80:80 nginx
- 新建并启动:
-
- $ docker run ubuntu:18.04 /bin/echo 'Hello world'
- $ docker run -t -i ubuntu:18:18.04 /bin/bash
-
- -t 选项让Docker分配一个伪终端
-
- i 则让容器的标准输入保持打开
- 启动已经终止的容器
-
- docker container start
- -d 后台启动
-
- docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
- 进入【后台运行的容器】
- docker attach 3e
- 注意:此命令如果从这个 stdin 中 exit,会导致容器的停止。
- docker exec -t -i 3e51 bash
- 从stdin中exit,不会导致容器停止。
- 导入导出
- docker export
- docker import
- $ docker import example.com/exampleimag… example/imagerepo
- 直接从URL中导入
- 删除:
- docker container rm trusting_netton
- 使用 -f 删除正在执行中的容器
- 清理所有处于终止状态的容器
- docker container prune
- 查看容器:
- docker ps
- 查看所有运行中的容器
- docker ps -a
- 查看关闭所有的容器(包含关闭的容器)
- docker ps
- 启动:
- docker container start c1
- 关闭
- docker container stop c1
- docker ps -aq
- a :所有容器,包含没有运行中的
- q: 查看容器的id.
- docker inspect c2
- 查看c2容器的信息
数据卷
数据卷的概念
- 将容器内目录与宿主机目录相互关联,容器目录信息改了会影响宿主机的目录内容;反之亦然
配置数据卷
- 挂载的数据卷【容器内】目录必须是绝对路径,宿主机目录可以是相对路径。
docker run -it --name=centos -v /Users/liuzongshuai/Documents/otherTest/docker/centos/data:/root/dataContainer centos
- 通过数据卷实现容器内数据的持久化
- 查看数据卷信息
docker inspect name|id
将多个容器挂在到同一个容器卷上
- 多个容器挂载同一个宿主机的数据卷实现内容的共享、交换。
数据卷容器
创建数据卷容器
docker run -it --name=c3 -v /volumn centos /bin/bash
挂在数据卷
docker run -it --name=c1 --volumes-from c3 centos /bin/bash
- 在centos的跟目录下创建数据卷/volumn
- 查看v3
- 查看v1
应用部署
部署mysql
docker run -it -p 3309:3306 --name=c_mysql2 -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123456 mysql:8.0
Dockefile
镜像原理
镜像是分层的。
镜像制作
- 默认挂载的文件是不会被打入镜像的。【根据此镜像启动容器的时候重新挂载就可以】
- 镜像是不能被传输的,需要打包成压缩文件进行传输,用load -i 进行解压缩。
- 可以通过commit指令或者Dockfile。
Dockfile
- 包含一条条的指令:
- AINTAINER :作者信息。
- FROM:基于基础镜像
- CMD: 基于镜像创建的容器启动的时候默认执行的指令。
- WORKDIR: 工作目录
- ADD
- ENV
- 举例:
Dockerfile:案例:发布SpringBoot|创建自己的centOs。
- 本人写的
FROM java:8
MAINTAINER Ryan<Ryan@163.com>
ADD springBootDockerfile-1.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar
- 打包成镜像:
docker build -f ./Dockerfile -t myspring:v2 . - 启动镜像
docker run -it --name=c2 -p 8080:8080 myspring:v2
服务编排
dockerpose 定义
dockerpose 编排nginx 和springboot
一、安装Docker Compose
# Compose目前已经完全支持Linux、Mac 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项目
- 创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose
- 编写 docker-compose.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"
- 创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d
- 在./nginx/conf.d目录下 编写itheima.conf文件
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
- 在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up
- 测试访问
http://192.168.149.135/hello