栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker 命令

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker 命令

#下载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 数据卷别名

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751435.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号