Docker学习
Contents
目标:使用docker搭建自用开发环境
1 docker核心概念
-
核心概念主要包括
dockerfile
、container
、image
、volume
-
dockerfile
- docker构建image的说明书
1 2 3 4 5 6
FROM 指定镜像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
-
logs
docker 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