Docker 命令

本文详细介绍了Docker的安装过程,包括从阿里云镜像仓库下载及启动Docker。接着讲解了如何管理镜像,如查看、删除、拉取和打包镜像。此外,还阐述了容器的操作,如创建、启动、停止、重启、进入和退出容器,以及数据卷的使用。最后,提到了容器间的通信和数据持久化的方法,并简单提及了Docker网络和数据卷的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#下载docker
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
#启动docker
sudo systemctl enable docker
sudo systemctl start docker
#创建docker用户组
sudo groupadd docker
#将当前用户加入docker组
sudo usermod -aG docker $USER

设置远程阿里云镜像仓库:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["镜像仓库链接"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


镜像相关
查看已有的镜像
docker images
【-q】只显示image-id

移除镜像
docker image rm -f 镜像 
docker image rm -f $(docker images -q) #删除全部镜像

从远程仓库拉取镜像到本地仓库
docker pull 镜像  不添加版本默认最新版本
docker pull redis:6.0.6  拉取指定版本

本地仓库镜像打包
docker save 镜像名/id:版本 -o 镜像包路径   (版本为latest好像不好用)
docker save 7614 -o redis-111.tar

/
# 将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档  
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3  
docker save -o  redis-111.tar redis:latest

打包之后的镜像就是一个文件

镜像包导入本地仓库
docker load -i 镜像包路径

从Dockerfile构建镜像
docker build -t 镜像名:版本 -f Dockerfile路径 上下文目录(里面存放了构建需要的文件,Dockerfile里面需要复制的文件都是以这个目录为当前目录的,且路径不能写出这个目录。)

容器相关

利用镜像创建并启动容器
docker run 
【-d】(后台运行)
【-p  宿主机端口:容器所在OS端口】(宿主机端口和容器所在OS端口映射)
【--name 名字】(给容器命名)
【-v 宿主机目录绝对路径/任意别名:容器内目录路径】
(数据卷(volume),即宿主机目录和容器内目录进行绑定以同步。
如果宿主机目录路径是绝对路径,则创建容器时宿主机目录会覆盖容器内目录;如果是别名则会在创建容器时自动在宿主机中创建一个目录,并将容器目录文件复制到宿主机中(/var/lib/docker/volumes/别名/_data)。)
【-e var=value】(传递需要的环境变量(参数))
镜像
【容器启动时执行的命令】(一般会有默认的命令)

需要绑定的文件:

nginx:配置文件 /etc/nginx/nginx.conf
         数据文件 /usr/share/nginx/xxx
开启跟随docker自启动( --restart=always  ),数据卷( -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf )
docker run -d -p 80:80 --name nginx --restart=always -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf   nginx:1.20.2 (nginx负载均衡)
docker run -d -p 80:80 --name nginx --restart=always -v /root/html:/usr/share/nginx/html   nginx:1.20.2 (nginx作为服务器)
nginx作为服务器和负载均衡
docker run -d -p 80:80 --name nginx --restart=always -v /root/html:/usr/share/nginx/html  -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf  nginx:1.20.2 

redis:数据文件: 开启持久化后文件生成在容器中的/data中
        配置文件(自己定义) 一般路径为
        /etc/redis-6.0.6/redis.conf
开启跟随docker自启动( --restart=always  ),AOF持久化( redis-server --appendonly yes )和数据卷( -v /root/redisdata:/data  )
docker run -d -p 6379:6379 --name redis --restart=always -v /root/redisdata:/data  redis:6.0.6 redis-server --appendonly yes
配置文件启动(最好新建配置文件,直接书写修改属性即可,不要全部替换)
docker run -d -p 6379:6379 --name redis --restart=always -v /root/redisconf:/data  redis:6.0.6 redis-server /data/redis.conf

需要的环境变量(参数):
mysql:数据文件 /var/lib/mysql
MYSQL_ROOT_PASSWORD=密码(设置mysql中root的密码)
运行mysql
跟随docker自启动 : --restart=always
使用数据卷持久化宿主机 -v /root/data:/var/lib/mysql 或 mysqlData:/var/lib/mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=hmgsoft --name mysql --restart=always -v /root/mysqldata:/var/lib/mysql mysql:5.7.34
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=hmgsoft --name mysql --restart=always -v mysqlData:/var/lib/mysql mysql:5.7.34

数据库导出全部数据库数据dump
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
导出指定数据库
docker exec mysql sh -c 'exec mysqldump --databases 库名 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/库名.sql
导出指定数据库结构不要数据
docker exec mysql sh -c 'exec mysqldump --no-data --databases 库名 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/库名.sql

移除容器
docker rm -f 容器名
docker rm -f $(docker ps -aq) #移除所有容器

进入容器
docker exec -it 容器名/id bash
退出容器
exit

复制文件
docker cp 容器名/id:文件路径 文件路径  #从容器复制文件到宿主主机
docker cp 文件路径 容器名/id:文件路径  #从宿主主机复制文件到容器
查询容器
docker ps
【-a】(所有容器,包括运行的和没有运行的。)docker ps -a
【-q】(只显示容器id)docker ps -q
【-qa】(显示所有容器id)docker ps -qa
启动容器
docker start   容器名/id

停止容器
docker stop 容器名/id

重启容器
docker restart 容器名/id

暂停容器
docker pause 容器名/id

恢复容器
docker unpause 容器名/id

查看容器内运行进程
docker top 容器名/id

查看容器内应用的信息
docker inspect 容器名/id

将容器提交为镜像添加到本地仓库中
docker commit 容器名/id 镜像名:版本

查看日志
这里的日志就是应用的输出
docker logs 
【-f】实时刷新
容器名/id


容器间通信(网桥):
1.docker中网络类型: bridge, host, null
2.创建网络自定义桥:
docker network create xxx  (默认bridge 用 -d bridge 可更换())
3.查看网路:
docker network ls 
4.查看某一个网络细节:
docker network inspect xxx
5.删除一个网络:
docker network rm xxx
6.运行多个容器在指定网络中:
         a.启动命令中添加 --network xxx 指定网络桥
    docker run --network xxx ......
         b.启动后容器加入到某个网络中
    docker network connect 网络名 容器id或名称

数据卷:
docker volumes ls
docker volume  inspect 数据卷别名 
docker volume rm 数据卷别名
docker volume create 数据卷别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值