docker常用命令

本文详细介绍了Docker的常用命令,包括启动、停止、管理Docker服务,操作镜像(搜索、下载、删除),以及容器的创建、启动、停止、重启等。还涉及数据卷的使用,容器数据持久化和备份。此外,讲解了如何创建私有镜像库,提交自建镜像,以及使用数据卷进行MySQL、Redis的安装和配置。最后提到了容器间的数据卷共享和软件安装实例。
摘要由CSDN通过智能技术生成

docker常用命令

1、帮助启动类命令

启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动:systemctl enable docker
查看概要信息:docker info
查看帮助文档:docker --help
查看命令帮助文档 docker 具体命令 --help

2、镜像命令

查看有哪些镜像:docker images ,options:-a(列出所有镜像) -q(只显示镜像id)
搜索某个镜像:docker search xxx ,option:–limit n(只列出n个镜像,例:docker search --limit 5 redis
下载镜像:docker pull xxx,option: xxx:tag(xxx镜像的版本号,不加:tag默认最新,例:docker pull redis:6.0.8)
查看镜像/容器/数据卷所占的空间:docker system df
删除镜像:docker rmi 镜像id或名字(可以是多个,空格隔开),option:(-f:强制删除 docker rmi -f xxx)
删除全部镜像:docker rmi -f $(docker images -qa)
题外 :虚悬镜像,名称和id都为< none >的无用镜像

3、容器命令

(1)新建+启动容器:docker run [option] IMAGE [COMMAND] [ARG....]

  • options:
    –name=容器新名字 (注意前边是两个“-”)
    -d:后台运行容器斌返回容器ID,也叫启动守护式容器(后台运行);
    -i :以交互模式运行容器,通常与 -t 同时使用;
    -t :为容器重新分配一个伪输入终端 ,通常与 -i 同时使用;
    -P:随机端口映射;
    -p:指定端口映射;
  • 在这里插入图片描述

(2)查看正在运行的容器:docker ps

  • options:
    -a : 列出正在运行和历史上运行过的容器
    -l : 显示最近创建的容器
    -n : 显示最近n个创建的容器
    -q : 静默显示,只显示容器编号

(3)退出容器:exit,退出后容器停止;ctrl+p+q,退出后容器不停止
(4)启动已经停止的容器 :docker start 容器id或名字
(5)重启容器:docker restart 容器id或名字
(6)停止容器:docker stop 容器id或名字
(7)强制停止容器:docker kill 容器id或名字
(8)删除已停止容器:docker rm 容器id或名字,批量强制删除:docker rm -f $(docker ps -a -q)
(9)重点

  • 启动前台交互式容器:docker run -it redis
  • 启动后台守护式容器:docker run -d redis
    注意:有些容器是不支持后台守护式启动的,如ubuntu、centos在这里插入图片描述
  • 查看容器日志:docker logs 容器id或名字
  • 查看容器内运行进程:docker top 容器id
  • 查看容器内部细节:docker inspect 容器id

重新进入正在运行的后台守护式容器:docker exec -it 容器iddocker attach 容器id
在这里插入图片描述
注意:上述两者的区别,attach 直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止,exec是在新的终端进程中打开容器,exit不会导致容器停止

  • 容器中的文件拷贝:docker cp [容器id]:[容器内文件的路径] [目的主机的路径]
    例子:将myu1中/tmp/a.txt 拷贝到当前主机的/root/tmp下并重命名为my.txt
    在这里插入图片描述
  • 将整个镜像导入和导出
    导出:docker export 容器id > 文件名.tar
    导入:cat 文件名.tar | docker import - 包名/镜像名:版本号
    在这里插入图片描述

小结:常用命令就这些,简单的命令没有给试例,例子中手残敲了些错命令注意甄别一下。

docker的使用

1、创建自己的镜像库,并提交自建镜像上去

(1) 下载registry容器:
docker pull registry
(2)运行(重点:运行时指定端口映射)
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
(3)将自定义的容器镜像commit
docker commit -m="提交说明" -a="作者名称" 自定义容器的id 容器的名称:版本号
在这里插入图片描述
(4)先验证本地的镜像库中有没有镜像
curl -XGET http://本地ip:registry端口号/v2/_catalog
在这里插入图片描述(
(5)用tag命令将自定义镜像修改为符合私服规范的tag
docker tag 容器名称或id:版本号 私服的ip:端口号/镜像新名称:新的版本号
在这里插入图片描述
(6)由于本地registry默认不支持http推送,所以要修改配置配置文件
在这里插入图片描述
cat /etc/docker/daemon.json
vim /etc/docker/daemon.json
按insert 键输入,在配置文件中加入 "insecure-registries": ["ip:端口号"],注意json格式,需要在上一条配置的尾部加“,”号,然后:wq保存,
在这里插入图片描述``
重启docker:systemctl restart docker
(7)将自定义的镜像push到私服库
docker push 192.168.205.130:5000/rootubuntu:1.1
(8)验证有没有镜像
curl -XGET http://本地ip:registry端口号/v2/_catalog
在这里插入图片描述
(9)将本地的镜像删掉,从本地镜像库中重新pull,并运行验证
docker pull 192.168.205.130:5000/rootubuntu:1.1
在这里插入图片描述

2、容器数据卷

用途:完成数据持久化和重要数据备份
特点:

(1)使用
docker run -it --privileged=true -v /tmp/host_data:/容器内的目录:权限 --name 新名称 镜像名
权限默认可读写:rw,只读:ro
(2)卷的继承和共享
docker run -it --privileged=true --volumes-from 父类 --name 新名称 镜像名

docker中常用软件的安装

因为docker run会自动pull本地没有的镜像,所以不需要手动pull
(1)安装免修改的tomcat8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
(2)安装mysql

  • 普通安装启动:docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
  • 数据卷备份启动: docker run -d -p 3306:3306 --privileged=true -v /zzyyuse/mysql/log:/var/log/mysql -v /zzyyuse/mysql/data:/var/lib/mysql -v /zzyyuse/mysql/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name testmysql mysql:8.0 其中“/zzyyuse/mysql/xxx”为本地的备份目录
  • 解决mysql中文乱码导致的插入失败:
    因为使用数据卷启动了mysql,所以直接在本地的/zzyyuse/mysql/config目录下新建my.cnf 并添加配置,这样配置也会同步到容器中的mysql中:
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

添加配置后重启容器
(3)安装Redis

  • 普通安装启动
    docker run -d -p 6379:6379 redis:6.0.8
  • 数据卷备份启动
    首先要在/app/redis目录下新建自己的redis.conf,在里边加入默认出厂的原始redis.conf,然后和容器里的配置文件绑定,之后可以通过修改宿主机中的配置从而配置容器中的redis。
    docker run -d --privileged=true -p 6379:6379 -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data --name myredis redis:6.0.8 redis-server /etc/redis/redis.conf
    注意:这里有问题,看某硅谷视频,在 /app/redis下新建redis.conf,redis.conf中daemonize已经设置为no了还是启动不了,以后找大佬给看看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值