Docker
Docker基础知识通俗解释
镜像
就像我们装系统一下,需要iso镜像文件,此镜像你可以照搬理解,也是用于安装对应软件。
同一软件可以同时存在多个版本的镜像。比如mysql,我本地可以同时存在5.7版本和8.0版本,安装容器的时候指定版本即可。
容器
我们用镜像安装并成功运行的对象,称之为容器。
而且同一镜像可以同时安装很多个容器,这样就可以很方便的模拟出分布式架构,学习和实践都方便。
常用命令
查看正在运行的容器
docker ps
查看所有已经创建的容器
docker ps -a
列出镜像列表
docker images
启动、停止、重启容器
docker start xxxx
docker stop xxxx
docker restart xxxx
强制删除容器
docker rm -f xxxx
删除镜像
docker images rm xxxx
配置docker镜像与容器安装路径
Docker 版本 >= v17.05.0
停止docker
sudo systemctl stop docker.socket
sudo systemctl stop docker.service
创建docker配置
vim /etc/docker/daemon.json
加入
{
"data-root": "/你要改的路径/docker",
"storage-driver": "overlay2" # 这个是 Docker 是默认设置,这里也可以不用加
}
重启docker
sudo systemctl restart docker.service
MySQL
拉取最新版mysql
docker pull mysql:latest
ARM架构,M1芯片拉去最新版mysql
docker pull mysql/mysql-server:latest
指定版本
docker pull mysql:版本号
验证是否安装mysql镜像
docker images
会看到有mysql的镜像(TAG为你下载时的版本)
安装运行容器
docker run -itd --name mysql -p 8000:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
解释:
run -itd
一般写法,详情查看菜鸟--name mysql
指定容器名称为mysql-p 8000:3306
将内部3306端口映射出去为8000,实际连接时也应上8000-e MYSQL_ROOT_PASSWORD=123456
设置默认root密码为123456- 尾部的
mysql
代表该容器的镜像,如果本地存在多个镜像需要指定版本,如mysql:5.7
这样还没完,mysql默认root是不允许外部连接的,我们需要进入修改。
docker desktop的同学进入容器命令行很方便:
也可以通过命令进入
docker exec -i 69d1 bash
其中69d1
是容器的id,前4位即可
查看容器id
docker ps
mysql的用户操作可以看这篇文章MySQL用户操作
Redis
拉取
docker pull redis:latest
安装并运行
docker run -itd --name redis -p 6379:6379 redis
设置默认密码
docker run -itd --name redis -p 6379:6379 redis --requirepass "mypassword"
RabbitMQ
拉取,这里注意一下rabbitmq:management
是带后台管理界面的,rabbitmq:latest
是不带的。
docker pull rabbitmq:management
安装并运行
docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
MongoDB
拉取
docker pull mongo:latest
安装并运行
docker run -itd --name mongo -p 27017:27017 mongo --auth
进入容器后配置连接账号密码
进入容器后输入下面指令进入
mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
设置服务自启
# docker update --restart=always 容器名或容器ID
docker update --restart=always <CONTAINER ID>
# 例如将tomcat设为自启动
docker update --restart=always tomcat