一、 docker的介绍
- Linux系统上安装docker
- 一个镜像可以映射出多个容器
- 快速部署应用环境
- docker 一次编写到处运行
- 快速可移植性
二、常用命令
1. 重启docker服务
第一种方法
sudo service docker restart
第二种方法
systemctl restart docker
2. 设置开机启动容器
创建时指定 --restart=always,可以使容器随docker服务启动时启动。
sudo docker run --restart=always 123
说明:123是容器id
3. 一键启动docker所有容器
docker start $(docker ps -a -q)
说明:
- -a表示所有
- -q为仅仅显示端口
4. 停止容器
停止一个容器
docker kill id
停止所有容器
docker stop $(docker ps -a -q)
5. 删除容器(需要先停止)
删除一个容器,{}表示里面的内容需要更改
docker container rm {name}
删除所有容器
docker rm $(docker ps -a -q)
6. 删除rabbitmq镜像
docker rmi rabbitmq
7. 以命令行交互容器
docker exec -it mysql /bin/bash
说明:
- mysql是容器名,也可以是容器id
8. 查看容器运行日志
docker logs es
说明:es是容器名,也可以用容器id
9. docker下载镜像
docker pull mysql:latest
说明:mysql是你需要的镜像名,latest表示默认版本
10. docker 运行镜像,生成容器
docker run mysql:latest
说明:mysql是你需要的镜像名,latest表示默认版本
11、唤醒容器
docker start name
12、挂起容器
docker stop name
三、下载常用容器
- 下载mysql
docker pull mysql
docker pull mysql:5.6.46
- 下载redis
docker pull redis
- 下载elasticsearch
docker pull elasticsearch:7.6.2
- 下载rabbitmq
docker pull rabbitmq:management
四、部署常用镜像
1. 运行mysql
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1111 mysql:latest
说明:
- -d 表示后台运行
- -p 表示端口
- –name 表示容器名
- -e 表示参数
- mysql:latest 表示镜像名,也可使用镜像id
2. 运行redis
- 运行这个需要准备一个预备工作,在/data/redis文件夹下放入一个redis.conf文件(这个文件去官方下载)。
sudo docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
3. 运行elasticsearch
docker run -p 9200:9200 -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -p 9300:9300 -d -e "discovery.type=single-node" --name es762 elasticsearch:7.6.2
4.运行rabbitmq
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
说明:
- 命令中的【RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin】是web管理平台的用户名和密码
- 默认账号:guest,密码为:guest
- 【 -p 15672:15672】 是控制平台docker映射到系统的对应端
- 【 -p 5672:5672】 是应用程序的访问端口
5.运行minio
docker run -p 9000:9000 -p 9001:9001 --name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=11111111" \
-v /mydata/minio/data:/data \
-v /mydata/minio/config:/root/.minio \
-d minio/minio server /data --console-address ":9001"
- 访问地址为 http://公网ip:9001/login
- 需要注意的是如果设置的密码低于8位会报错,报错信息通过 docker logs minio 可以查看
- 上面9001是web管理地址,9000是API地址
五、其他
5.1、linux上将当前登录用户加入到docker用户组中
//将当前登录用户加入到docker用户组中
sudo gpasswd -a $USER docker
//更新用户组
newgrp docker
5.2 docker以命令行交互容器mysql的扩展资料
docker exec -it mysql /bin/bash
//命令行登录
mysql -u root -p 1111
//查询账号密码
select host,user,authentication_string from mysql.user;
//切换数据库到mysql
use mysql
5.3 运行elasticsearch容易出现的一些错误
因为elasticsearch特别废内存,所以往往没有给它足够的空间,它特别容易被强行关闭。
vi config/elasticsearch.yml //编写配置文件,下面写入这些
xpack.ml.enabled: false
http.cors.enabled: true //跨域访问
http.cors.allow-origin: "*"
提高运行内存大小
sysctl -w vm.max_map_count=262144 //重启失效,一时使用
//永久解决方式
vi /etc/sysctl.conf
//写入
vm.max_map_count=262144
// 查看当前值
sysctl -a|grep vm.max_map_count
5.4 运行rabbitmq如果报错
- 可以试着把对账号密码的设置给删了,使用默认的账号密码
- 账号密码输入错误,出现下面这个界面
5.5 docker镜像发布的步骤
- 编写一个dockerfile文件
- docker build 构建成为一个镜像
- docker run 镜像
- docker push 镜像(发布镜像到DockerHub、阿里云镜像仓库)
5.6 docker 容器自动退出的问题
- docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退
- 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出这个是 docker 的机制问题
5.7 redis运行前的预备工作,导入配置文件
- 下载redis.conf文件,点击跳转
- linux新增文件夹,并把文件 redis.conf 放置在 /data/redis 文件夹下
sudo mkdir /data
sudo mkdir /data/redis
sudo mkdir /data/redis/data
需要改的这几行都在比较前面的位置,大致在文件的60~80行。
5.8 docker 拉取的镜像的时候,可能会让你选择出现下面这个界面,一般选取第三个即可
quiet msg.
? Please select an image:
▸ registry.access.redhat.com/rabbitmq:management
registry.redhat.io/rabbitmq:management
docker.io/library/rabbitmq:management