docker教程
5.docker中的名词概念
镜像:
docker镜像就好比是一个模板,可以通过这个模板来创建多个容器服务(最终服务运行或者项目运行就是在容器中的)
容器:
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。容器可以启动、停止、删除等基本命令。目前就可以把这个容器理解为就是一个简易的linux系统。
仓库:
仓库就是存放镜像的地方;仓库分为共有仓库和私有仓库。
6.安装Docker
环境准备
- 需要Linux基础
- CentOS7
- 我们使用XShell
环境查看
# 系统内核是 3.10以上的
[centos4@bogon /]$ uname -r
3.10.0-693.el7.x86_64
# 系统版本
[centos4@bogon /]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
安装
帮助文档:
# 1.卸载旧的版本
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.需要的安装包
sudo yum install -y yum-utils
# 3.设置镜像仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 默认是国外的
# 推荐使用阿里云的
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4.更新
yum makecache fast
# 5.安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
# 6.启动docker
sudo systemctl start docker
# 7.测试docker
sudo docker run hello-world
# 8.测试docker镜像
docker images
# 删除docker
yum remove docker-ce
7.阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://kaxr8ik8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
8.Run的流程和Docker原理
9.docker的常用命令
帮助命令
docker version # 显示docker版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help 帮助命令
docker images # 查看所有镜像
docker pull mysql # 下载mysql镜像
docker rmi -f e73346bdf465 # 删除镜像
docker rmi -f $(docker images -aq) #删除全部镜像
10.容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
# 1.下载centos
docker pull centos
# 2.新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" # 容器名字 tomcat01 tomcat02 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口 -p 8080:8080
-p ip:主机端口 容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P # 随机指定端口
# 1.启动并进入容器
docker run -it centos /bin/bash
# 2.退出容器
exit
# 3.列出当前正在运行的容器
docker ps
# 4.列出当前正在运行的容器+历史运行过的容器
docker ps -a
# 5.显示最近创建的容器
docker ps -a -n=1
# 6.只显示容器的编号
docker ps -aq
# 1.exit 直接停止并退出容器
# 2.查询运行中的镜像
docker ps #发现无
# 3.启动centos镜像
docker run -it centos /bin/bash
# 4.容器不停止退出
Ctrl + p + Q
删除容器
1.docker rm 容器id #删除指定容器 不能删除正在运行的容器
2.docker rm -f $(docker ps -aq) #删除所有的容器
3.docker ps -a -q|xargs docker rm #删除所有的容器
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
11.常用其它命令
后台启动命令
# 命令 docker run -d 镜像名
docker run -d centos
# 问题docker ps,发现centos停止了
# 常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了 。
查看日志
docker logs -f -t --tail 10 3a2e6b73b4ed
14.部署Nginx
# 1.搜索nginx
docker search nginx
# 2.安装nginx
docker pull nginx
# 3.启动
docker run -d --name nginx01 -p 3344:80 nginx
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口
# 4.本地访问nginx
curl localhost:3344
# 5.宿主机访问
http://192.168.32.131:3344/
# 6.进入nginx
docker exec -it nginx01 /bin/bash
# 7.进入 cd /etc/nginx
# 8.停止
docker stop 45375945
思考问题:
我们每次改动nginx配置文件,都需要进入容器内部?十分麻烦,我要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改 -v 数据卷
15.部署Tomcat
# 官方的使用
docker run -it --rm tomcat:9.0
# 我们之前的启动都是后台,停止了容器之后,容器还是可以查到 docker run -it --rm,一般用来测试,用完删除。
# 下载再启动
docker pull tomcat
# 做映射并启动
docker run -d -p 3355:8080 --name tomcat01 tomcat
# 测试访问
# 进入
docker run -d -p 3355:8080 --name tomcat01 tomcat
# 发现问题:1.linux命令少了。2.没有webapps。阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除掉。保证最小可运行的镜像!
16.部署ES+Kibana
# es 暴漏的端口很多!
# es 十分的耗内存!
# es 的数据一般需要放置到安全目录!挂载
# --net somenetwork:网络配置
#启动elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
# 启动后,linux就卡住了,docker stats 查看 cpu的状态
# 测试一下es是否启动成功:curl localhost:9200
# 增加内存设置:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
17.Portainer可视化面板安装
- portainer(临时)
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
访问地址:http://192.168.32.131:8088/#/init/admin
- Rancher(CI/CD)
18.镜像原理之联合文件系统
19.镜像原理之分层立即
20.Commit镜像
持续更新中…