Docker学习笔记

博主 1244 2020-08-22

参考视频 B站 编程不良人 https://www.bilibili.com/video/BV1Qa4y1t7YH

1. 什么是Docker

image.png
引自官网:

Package Software into Standardized Units for Development, Shipment and Deployment

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

2. Why Docker?

image.png

3. 在centos7安装docker

卸载原有的docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

设置yum依赖

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

启动docker

sudo systemctl start docker

测试启动是否成功

docker run hello-world

4. Docker的核心

image.png
image.png

5. Docker常用命令

docker images 查询所有镜像

docker search xxx 搜索镜像

docker pull xxx 拉取镜像
eg: docker pull nginx:latest docker pull nginx:1.11

docker rmi -f hello-world
-f 强制删除镜像


容器常用命令

docker ps 查看正在运行的容器状态
-a 正在运行的和历史运行的容器
-q 只显示容器id
--name 自定义容器name
docker run 运行镜像
docker run -p 80:80 nginx 本机的80端口映射到容器的80端口
-d 守护进程

docker stop id/name 正常关闭容器

docker start id 启动某个容器

docker kill id 直接关闭,不等待内部操作

docker rm id 删除容器
-f 强制删除
docker rm -f $(docker ps -aq) 删除所有容器

docker top id/name 查看容器内进程

docker inspect id 查看容器内部信息

docker logs id 查看日志
-t 时间戳
-f 跟随最新的日志

进阶命令
docker exec id 容器内命令 进入容器执行命令
-i 交互模式运行容器,通常与-t 一起使用
-t 分配一个伪终端
docker exec -it 159 /bin/bash

docker commit -a="作者" -m="描述信息" 容器id 目标镜像名称:TAG

docker cp 容器id:容器内资源路径 宿主机目录路径 --- 将容器资源拷贝到主机上

数据卷
在Docker run时添加-v 参数
-v 宿主资源路径:容器路径
eg:
docker run -d -p 80:80 -v /Users/mac/Desktop/素材:/usr/share/nginx/html nginx
使用docker inspect 查看是否挂载成功
image.png

docker save 要保存的镜像名字 ----把镜像保存为tar
-o 打包的tar包名字

docker load -i tar包名字 ---解压为一个镜像

6. Docker镜像原理

镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行时环境和基于运行软件开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时所需要的库,环境变量和配置文件
image.png
image.png

7. Docker安装mysql

选择一个mysql版本拉取

docker pull mysql:8

运行mysql,一定要指定root用户的密码

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8

如果需要的配置文件在宿主机器上,在run时使用—v参数,指定配置文件的位置
docker run -v /xxx/mysql/conf.d:/etc/mysql/conf.d
image.png
mysqldump的配置很多,参考其他文档

8. Docker 安装redis

docker pull redis:5.0.9

docker run --name redis -p 6379:6379 -d redis:5.0.9

9. DockerFile

9.1 什么是DockerFile
image.png
9.2 DockerFile解析过程
image.png
9.3 DockerFile常用命令
image.png
使用
docker build -t Dockerfile . 生成镜像
FROM命令
image.png
RUN命令
image.png
EXPOSE命令
image.png
CMD命令
image.png
ENTRYPOINT命令
image.png
WORKDIR命令
image.png
ENV命令
image.png
后续指令可以使用$name 获取ENV设置的环境变量
VOLUME命令
image.png
ADD命令
image.png
COPY命令
image.png


使用Dockerfile构建SpringBoot项目
首先把项目打成jar包
然后把jar包放入linux虚拟机中
然后编写Dockerfile
image.png
docker bulid -t Dockerfile . 构建镜像
docker run 运行容器 注意-p映射端口