文章目录
一 Docker介绍
构建轻量虚拟化境
, 契合云计算"实例水平扩展,资源动态调整
"的需求,Docker
可能成为云计算的基石.
Docker
设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境的一致性.
Docker
借鉴了标准集装箱的概念, 集装箱运输货物,而Docker
运输软件.
1.1 Docker 守护进程
#### 1.1.1安装 Docker
下面为 centos 系统安装 docker 的方法, 其他系统需要自行查找,打开下面网址,即可看到其他系统安装的方法.
https://docs.docker.com/install/linux/docker-ce/centos/
02 卸载之前的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
03 安装必要的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
04 设置docker仓库 [设置阿里云镜像仓库可以先自行百度,后面课程也会有自己的docker hub讲解]
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
[访问这个地址,使用自己的阿里云账号登录,查看菜单栏左下角,发现有一个镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors]
05 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
1.1.2 启动Docker
06 启动docker
sudo systemctl start docker
07 测试docker安装是否成功
sudo docker run hello-world
#### 1.1.3 docker基本体验
01 创建tomcat容器
docker pull tomcat
docker run -d --name my-tomcat -p 9090:8080 tomcat
02 创建mysql容器
docker run -d --name my-mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=jack123 --privileged mysql
03 进入到容器里面
docker exec -it containerid /bin/bash
1.5.4 可能有的疑惑
(1) docker pull在哪拉取的镜像?
默认是在hub.docker.com
(2) docker pull tomcat拉取的版本是?
默认是最新的版本,可以在后面指定版本":"
(3) 简单先说一下命令咯
docker pull 拉取镜像到本地
docker run 根据某个镜像创建容器
-d 让容器在后台运行,其实就是一个进程
--name 给容器指定一个名字
-p 将容器的端口映射到宿主机的端口
docker exec -it 进入到某个容器中并交互式运行
1.2 Docker 图形界面
- 查看镜像
docker search dockerui
- 下载镜像
docker pull abh1nav/dockerui
- 启动
dockerui
容器,这里需要注意带上privileged
参数,提升权限
docker run -d --privileged --name dockerui -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock abh1nav/dockerui
有可能有防火墙的问题.
- 浏览器查看
dockerui
:http://localhost:9000 或者 curl http://localhost:9000
展示结果如下:
1.3
二 常用命令
2.1 查看Docker程序是否存在
docker info
2.2 查看 容器 日志信息
docker logs container_name
// -f 相当于 tail -f 循环
如: docker logs -f elasticsearch_zoro
2.3 查看容器中的进程
docker top container_name
2.4 检查容器
docker inspect 3e27d4875c06 //容器Id
2.5 容器中查看ip
cat /etc/hosts #可以查看ip
或者
ip a
会出现 ip , command not found
执行apt-get update & apt-get install -y iproute2
再试试,
三 docker-compose
安装 docker-compose
https://docs.docker.com/compose/install/
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用
Dockerfile
定义应用程序的环境。 - 使用
docker-compose.yml
定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行docker-compose up
命令来启动并运行整个应用程序。
我们从logo
上可以看出来, 说白了, 这个东西就是一个管理容器的工(zhang)具(yu), 我们可以方便的使用它来管理我们的docker
容器, 可以极大程度的简化命令行的复杂操作.
默认情况下将文件命名为
docker-compose.yml
,进入当前目录下去执行docker-compose
命令就可以了
docker-compose
常用的命令有:
docker-compose up -d
启动容器,如果镜像不存在则先下载镜像,如果容器没创建则创建容器,如果容器没启动则启动
docker-compose down
停止并移除容器
docker-compose restart
重启服务
3.1 docker-compose.yml
文件模板
version: '3.7'
services:
#声明构建容器的名称,docker-compose start和stop命令可以使用
testhttpweb:
#使用指定目录下的Dockerfile进行构建
build: .
#相当于docker run命令的-p参数,用于声明对外开放的端口
ports:
- "5000:5000"
- "8010:80"
docker 和 docker-compose对应
- version 具体的版本号,请参考官网 https://docs.docker.com/compose/compose-file/ , docker-compose 和 docker 版本兼容性。
例子: mysql
version: '3.7'
services:
db1:
image: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=zoro
volumes:
- "/home/chenershuai/composetest/mysql:/var/lib/mysql"
docker-compose up
报错 3306端口占用
,杀不死;
解决方法:【Docker】安装MySQL彻底解决3306端口占用问题
-
environment
环境变量
-
volumes
将主机的数据卷或着文件
挂载
到容器里。表示:本地文件夹互相映射到容器
/var/lib/mysql
的文件夹中, 两个文件夹中文件
是同步
的。
四 Docker Dockerfile
4.1 什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条
构建镜像所需的指令和说明。
4.2 使用 Dockerfile 定制镜像
这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你只要知道构建的流程即可。