docker常用命令
# 启动docker
systemctl start docker
# 停止dokcer
systemctl stop docker
# 查看docker状态
systemctl status docker
# 重启docker
systemctl restart docker
# 设置docker 开机自启
systemctl enable docker
# 查看docker 版本
docker version
# 查看docker 镜像
docker images
# 查看docker 运行列表
docker ps
# 查看docker (运行、停止)
docker ps -aq
# 删除容器
docker rm -f 容器ID/容器名称(CONTAINER ID/NAMES)
# 删除多个容器(空格隔开)
docker rm -f 容器ID/容器名称 容器ID/容器名称 ...
# 删除全部容器
docker rm -f $(docker ps -aq)
#开机自启容器
docker run --name=容器名 -d --restart=always 镜像名
基本命令
查看镜像列表
docker images
下拉镜像
docker pull 镜像名
docker pull 镜像名:Tag
删除镜像
docker rmi -f 镜像名/镜像ID
保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置
容器列表
docker pssudo docker ps -a # 查看所有容器 -----包含正在运行 和已停止的
创建容器
docker run -it -d --name 要取的别名 -p 宿主机端口:容器端口 -v 宿主机文件存储位置:容器内文件位置 镜像名:Tag /bin/bash
停止容器
docker stop 容器名/容器ID
删除容器
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
进入容器
进入正在运行中的容器
docker attach 容器ID/容器名
修改容器的端口号
1、停止容器
docker stop 容器ID
2、停止docker
systemctl stop docker
3、修改文件
先进入目录
如果通过容器ID找不到目录可能是容器ID不全,先执行cd /var/lib/docker/containers命令进入目录后查看容器ID。
cd /var/lib/docker/containers/容器ID*
[root@centos-base /]# cd /var/lib/docker/containers/856d790c064b
-bash: cd: /var/lib/docker/containers/856d790c064b: 没有那个文件或目录
[root@centos-base /]# cd /var/lib/docker/containers
[root@centos-base containers]# ls
856d790c064bad2696781289717994be3a70b521328176ff0c3e6bf29bf04e13
[root@centos-base containers]# cd 856d790c064bad2696781289717994be3a70b521328176ff0c3e6bf29bf04e13/
[root@centos-base 856d790c064bad2696781289717994be3a70b521328176ff0c3e6bf29bf04e13]# ls
修改hostconfig.json
文件
vi hostconfig.json
找到类似如下字段:按照json文件格式添加或修改成需要的端口号即可
"PortBindings": {
"111/tcp": [ //容器端口1
{
"HostIp": "",
"HostPort": "111" //宿柱机端口1
}
],
"222/tcp": [ //容器端口2
{
"HostIp": "",
"HostPort": "222" //宿柱机端口2
}
]
}
4、重启docker
systemctl restart docker
5、重启容器
docker restart 容器ID
安装MySQL
拉去镜像
docker pull mysql
运行镜像
docker run -d -p 3306:3306 -v /docker_volume/mysql/conf:/etc/mysql/conf.d -v /docker_volume/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql
查看容器内部
docker exec -it mysql /bin/bash
登录MySQL
mysql -u root -p
重启MySQL
docker restart mysql
docker stop mysql #停止
docker start mysql #启动
安装redis
创建目录
mkdir -p docker_volume/redis/myredis
mkdir -p docker_volume/redis/myredis/data
配置文件
myredis.conf
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#bind 127.0.0.1
protected-mode no
port 6379
tcp-backlog 511
requirepass root
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
启动redis容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /docker_volume/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /docker_volume/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass root
-
--restart=always 总是开机启动
-
--log是日志方面的
-
-p 6379:6379 将6379端口挂载出去
-
--name 给这个容器取一个名字
-
-v 数据卷挂载
- /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
- /home/redis/myredis/data:/data 这个同上
-
-d redis 表示后台启动redis
-
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
-
–appendonly yes 开启redis 持久化
-
–requirepass root 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)
-
成功界面
通过docker ps指令查看启动状态
dockerps-a|grep myredis # 通过docker ps指令查看启动状态,是否成功.1
查看容器运行日志
#查看此容器30分钟之内的日志情况。
docker logs --since 30m myredis
容器内部连接进行测试
#命令:docker exec -it <容器名> /bin/bash
docker exec -it myredis redis-cli
安装mongodb
拉去镜像
docker pull mongo
创建mongo数据持久化目录
mkdir -p /docker_volume/mongodb/data
运行容器
docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo --auth
登录mongo容器,并进入到【admin】数据库
docker exec -it mongo mongosh admin
创建一个用户,mongo 默认没有用户
db.createUser({ user:'root',pwd:'root',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
连接mongo数据库
db.auth('root', 'root')
测试数据库
#插入一条语句
db.user.insert({"name":"zhangsan","age":18})
#查询
db.user.find()
安装RabbitMQ
拉取镜像
docker pull rabbitmq
启动RabbitMQ
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
安装插件
-
先执行docker ps 拿到当前的镜像ID
-
进入容器
-
安装插件
-
ctrl+p+q退出当前容器
docker ps
docker exec -it 镜像ID /bin/bash
rabbitmq-plugins enable rabbitmq_management
访问地址
http://linuxip地址:15672,这里的用户名和密码默认都是guest