Docker学习
Contents
目标:使用docker搭建自用开发环境
1 docker核心概念
-
核心概念主要包括
dockerfile、container、image、volume -
dockerfile- docker构建image的说明书
1 2 3 4 5 6FROM 指定镜像tag RUN 运行命令 ADD 复制宿主机文件 ENV 添加环境变量 WORKDIR 访问容器时的初始目录 VOLUME [指定匿名卷,防止run或rebuild时忘记-v绑定数据卷] -
image(镜像)- 相当于一张系统盘
-
container(容器)- 相当于一台虚拟机
-
volume(数据卷)- 相当于虚拟机的硬盘,可以用来持久化容器内数据
- 因为每次rebuild都相当于重装系统,其内部数据会被清空
docker volume create [name]创建数据卷
2 docker常用命令
-
build- 基于
dockerfile构建image
1 2$ # docker build [dockerfile目录] -t [标签名] $ docker build . -t xxx/yyy:0.1- 查看与删除image
1 2$ docker image ls $ docker image rm [tag] - 基于
-
run- 运行image启动container
1 2$ docker run -dit [image_tag] --name [container_name] -p [宿主机端口:容器端口] -e [环境变量=值] --network=net1 $ docker run -v volume_name:/容器内需持久化的路径- -d 表示deamon,即启动后不需自动关闭
- 以mysql容器为例
1$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.38 -
exec- 访问container
1$ docker exec -it [container_id] bash/zsh- 退出container
1$ exec / ctrl + D -
pull- 拉取镜像
1$ docker pull alpine:latest -
start-
docker ps -a查看全部容器 -
docker start [container_id]启动容器
-
-
stop- 同start
-
logsdocker logs container_id查看容器日志
3 docker连接数据库
- 创建局域网
|
|
- 创建数据库容器,指定局域网
|
|
- 服务端安装相关库,并连接到局域网
|
|
- 开启数据库容器,完成数据库连接
4 搭建个人开发环境
- 镜像目录
|
|
- devcontainer.json
devcontainer.json中的配置项,实际上相当于运行docker run命令的配置项
|
|
- dockerfile
|
|
-
上传自己的
image到docker hub- 构建image,指定tag名称
1$ docker build . -t gsemir/dev-env:0.1- 登录docker
1$ docker login- push
1$ docker push gsemir/dev-env:0.1- 修改tag版本为latest
1$ docker tag gsemir/dev-env:0.1 gsemir/dev-env:latest- 再次push
1$ docker push gsemir/dev-env:latest
Author gsemir
LastMod 2022-07-19