docker学习笔记
2小时学dacker
文章目录
1. docker入门
-
启动docker
systemctl start docker
-
查看docker状态
systemctl status docker
-
关闭docker
systemctl stop docker
-
开机自启动
systemctl enable docker
-
重启
systemctl restart docker
2. 镜像images
-
查看本地镜像
docker images
-
在线搜索镜像
docker search redis
-
下载镜像
docker pull redis:6.0
- 不写版本号,默认latest
-
删除镜像
docker rmi redis:6.0 docker rmi images_id(123345345rwerw)
-
查看本地所有镜像
docker images -q
-
删除所有镜像
docker rmi 'docker images -q'
3. 容器container
-
启动容器
docker run -it --name=c1 redis:latest /bin/bash
- i: 一直运行
- t: 分配终端
- name: 容器名称:版本号
- /bin/bash/: 创建后直接进入容器
-
后台启动
docker run -id --name=c2 redis:latest /bin/bash
- d: 后台运行
-
退出容器
exit
-
查看运行容器
### 当前运行容器 docker ps ### 历史运行容器 docker ps -a
-
进入容器
docker exec -it c1 /bin/bash
-
关闭容器
docker stop c1
-
删除容器
docker rm c1
-
查看所有容器ID
docker ps -aq
-
删除所有容器
docker rm 'docker ps -aq'
-
查看容器信息
docker inspect c1
4. 数据卷
-
作用
- 容器数据持久化
- 客户端与容器数据交换
- 容器间数据交换
-
启动容器,配置数据卷
### 启动容器c1设置数据卷 docker run -it --name=c1 -v /volume redis:latest /bin/bash ### 启动容器c2,设置容器1的数据卷 docker run -it --name=c2 -volumes-from c1 redis:latest /bin/bash
5. 安装MYSQL
docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest
- 以上代码可以直接复制
- p: 宿主机端口:容器端口
- v: 宿主机位置:容器位置
- $PWD: 当前位置目录
6. 安装tomcat
docker run -id \
-p 8080:8080 \
--name=c_tomcat \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:latest /bin/bash
## 无法访问主页,把webapps.dist里面文件放在webapps 目录下即可
7. 安装nginx
docker run -id \
-p 80:80 \
--name=c_nginx \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
8. Dockerfile
-
镜像制作
### 制作镜像,不写版本默认latest ### 注意:挂载文件不会生成到新的镜像中 docker commit 容器id 镜像名称:版本号 ### 把镜像保存成压缩文件 docker save -o 压缩文件名称 镜像名称:版本号 ### 把压缩文件还原成镜像 docker load -i 压缩文件名称
-
Dockerfile概念
- Dockerfile是一个文本文件
- 包含一条条的指令
- 每一条执行构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
- 对于运维人员:在部署时,可以实现应用的无缝移植
- 注意:可以通过共享镜像文件,非常方便
-
Dockerfile制作案例
### 定义父镜像 FROM java:8 ### 定义作者信息 MAINTAINER liufan <869860490@qq.com> ### 将jar包添加到容器,本地jar:容器jar ADD springboot.jar app.jar ### 定义容器启动执行命令 CMD jaVA -jar app.jar
### 通过dockerfile构建镜像 docker build -f dockerfile文件路径 -t 镜像名称版本 .
9. Dockerfile服务编排
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:
- 利用Dockerfile定义运行环境镜像
- 使用docker-compose.yml定义组成应用的个服务
- 运行docker-compose up 启动应用
10. DOCKER创建私有仓库
-
下载私有仓库镜像
docker pull registry
-
启动私有仓库镜像
docker run -id --name=registry -p 5000:5000 registry
-
修改daemon.json文件
vim /etc/docker/daemon.json ### 增加配置,用于让docker信任私有仓库地址,ip为私有仓库真实ip {"insecure-registries":["ip:5000"]}
-
重启docker服务
systemctl restart docker
-
如果报错
Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again. #### 报以上错误,修改文件名称 mv daemon.json daemon.conf ### 重启服务 systemctl restart docker
-
镜像上传私有仓库
### 标记镜像为私有仓库镜像 docker tag centos:7 ip:5000/centos:7 ### 上传标记的镜像 docker push ip:5000/centos:7
-
从私有仓库拉取镜像
docker pull ip:5000/centos:7