Docker常用命令
docker pull 从镜像仓库拉取到本地
docker push 把本地镜像推送到镜像仓库
docker run 创建并运行镜像,没有的话就去镜像仓库拉取创建
docker stop 停止容器内的进程,容器还在
docker start 启动容器内的进行
docker rmi 删除镜像
docker rm 删除容器
docker exec -it container bash进入容器执行
阿里云Docker创建mysql并用本地连接
- 设置安全组,开启3306端口到外网
本地电脑连接阿里云服务器上搭建的MySQL数据库_连接阿里云ecs mysql-CSDN博客
- 创建并且启动容器
docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 mysql
- 进入容器
docker exec -it mysql bash
- 创建可供外网连接的user并赋予权限
mysql> CREATE USER 'pig'@'%' IDENTIFIED BY '123456';mysql> GRANT ALL ON *.* TO 'pig'@'%';mysql> FLUSH PRIVILEGES;
然后就可以连接了
Docker数据卷
容器内目录和宿主机目录之间映射的桥梁
- 在执行docker run命令时,使用 -v 数据卷:容器内目录 可以完成数据卷挂载
- 当创建容器时,如果挂载了数据卷且数据卷不存在,就会自动创建数据卷,不用主动create
[root@iZ9pkvidenjr9xZ ~]# docker volume inspect html
[{"CreatedAt": "2024-11-04T10:54:14+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/html/_data","Name": "html","Options": null,"Scope": "local"}
]
mysql的数据挂载
- 在执行docker run命令时,使用 -v 本地目录:容器内目录 可以完成本地目录挂载
- 本地目录必须以/或者./开头,否则会被识别为数据卷
自定义镜像
Dockerfile
docker build -t myImage:1.0 .
// -t 是tag的意思
// myImage:1.0 冒号前面是repository,后面是版本号,版本号可以省略,默认是latest
// 强烈注意最后的“ .”用于指定Dockerfile中的目录,当前目录是“ .”
Docker网络通信
所有容器都是以bridge方式连接到Docker的一个虚拟网桥上。
容器的ip地址可能会发生变化
自定义网络
加入自定义网络(docker network create)的容器可以通过容器名互相访问
项目部署
部署Java应用
- Maven package成jar包
- Dockerfile和jar包上传到同一目录
- docker build -t hmall .
- docker run -d --name hm -p 8080:8080 --network yyc hmall
本地也可以连接了,好耶~~~
部署前端项目
创建nginx容器,nginx.conf、html目录与容器挂载
可以看到前端页面了,好耶~~~
DockerCompose
一个一个部署,还要连接同一个网络,配置的时候容易出错,而且没有整体性,维护困难
通过docker-compose.yml模板文件定义一组相关联的应用容器,实现多个相互关联的Docker容器的快速部署
一个docker-compose.yml对应一个项目,一个项目包含多个服务
docker-compose.yml文件和Dockerfile里面的信息一样