Docker基础学习笔记

Docker

由于docker不需要虚拟机实现硬件资源虚拟化,运行docker容器上的程序直接使用的是实际的物理机的硬件资源。因此在cpu、内存利用率上有明显的优势。
docker并非通用容器工具,它依赖于已存在并运行的linux内核环境。

镜像:镜像是创建Docker容器的基础,Docker镜像类似于虚拟机镜像,可以把Docker镜像理解成一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变(只读)

容器:Docker容器(Container)类似于一个轻量级的沙箱子(因为Docker是基于Linux内核的虚拟技术,所以消耗资源十分少),可以把每个容器看作一个简易版的Linux系统环境(包括了root用户权限、进程空间、用户空间和网络空间),以及与运行在其中的应用程序打包而成的应用盒子。Docker利用容器来运行和隔离应用。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

仓库:Docker仓库(Repository)类似于代码仓库,是Docker集中存放镜像文件的场所。每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库,称为Ubuntu仓库,其中可能包括14.04,12.04等不同版本的镜像。但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。理解这个关系就是:一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

安装gcc

  1. yum -y install gcc
  2. yum -y install gcc-c++

卸载docker

  1. systemctl stop docker
  2. yum remove docker-ce-cli containerd.io
  3. rm -rf /var/lib/docker
  4. rm -rf var/lib/containerd

指令

  1. 启动容器:docker restart
  2. 进入redis:docker exec -it redis redis-cli
  3. 开机重启:docker update mysql --restart=always
  4. 启动docker:systemctl start docker
  5. 启动nacos:startup.cmd -m standalone
  6. 进入到docker指定容器:docker exec -it /bin/bash
  7. 压力测试工具:jconsole、jvisualvm
  8. 查看centos版本:cat /etc/redhat-release
  9. 查看linux内核版本:uname -r
  10. 查看docker版本:docker version
  11. 查看文件系统容量:df -h
  12. 进入redis:redis-cli -p 6379
  13. 主机端口(外部端口):docker容器端口: -p小写
  14. 随机分配端口:-P大写
  15. 交互:i
  16. 终端:t
  17. 后台:d
  18. 解压文件:tar -jxvf xxx.tar.bz2、tar -zxvf xxx.tar.gz、unzip xxx.zip
  19. 防火墙重载规则:firewall-cmd --reload
  20. 查看已配置的规则:firewall-cmd --list-all
  21. 指定端口和ip访问:firewall-cmd --permanent --add-rich-rule="rule family=“ipv4” source address=“192.168.44.101” port protocol="tcp "port=“8080 accept”
  22. 移除规则:firewall-cmd --permanent --remove-rich-rule=“rule family=“ipv4” source address=“192.168.44.101” port port=”8080” protocol=“tcp” accpet”
  23. 将主机中的文件或安装转移到docker容器中:docker cp 主机的绝对路径 容器名字或容器ID:/安装路径

docker帮助启动类命令

  1. 启动docker:systemctl start docker
  2. 停止docker:systemctl stop docker
  3. 重启docker:systemctl restart docker
  4. 查看docker状态:systemctl status docker
  5. 开机启动docker:systemctl enable docker
  6. 查看docker概要信息:docker info
  7. 查看docker总体帮助文档:docker --help
  8. 查看docker命令帮助文档;docker 具体命令 --help

docker镜像命令

问题:docker的虚悬镜像就是仓库名和标签都为none的镜像(需要删除)

  1. docker images 列出本地主机上的镜像 (-a:列出本地所有镜像,包含历史印像层;-q:只显示镜像ID)
  2. docker search 某个镜像的名字 (例如 docker search --limit 5 redis)
  3. docker pull 某个镜像名字 (例如 docker pull redis:6.0.8)
  4. docker system df 查看镜像/容器/数据卷所占的空间
  5. docker rmi 某个xxx镜像的名字或id(删除镜像,docker rmi -f 镜像id,-f为强制删除;docekr rmi -f ${docker images -qa}删除全部镜像)

docker容器命令(有镜像才能创建容器)

  1. docker run 容器ID或者镜像名字(例如:docker run -it ubuntu /bin/bash;docker run -it --name=myu1 ubuntu bash,分配名字)
  2. docer ps -a (列出所有运行过的容器实例)
  3. exit 退出docker
  4. docker rm 容器ID或容器名 (删除已停止容器)
  5. docker rm -f 容器ID或容器名 (强制删除容器)
  6. docker start 容器ID或容器名
  7. docker restart 容器ID或容器名
  8. docker stop 容器ID或容器名
  9. docker kill 容器ID或容器名(强制停止容器)
  10. docker run -d centos 后台模式启动容器 (不存在容器时使用)
  11. docker run -it redis:6.0.8 后台模式启动 (不存在容器时使用)
  12. docker exec -d centos /bin/bash (容器存在时使用)
  13. dockers cp 容器ID 容器路径 虚拟机路径 (docekr cp fb296cb71fec /tmp/a.txt /zzxxpp)
  14. docker export 容器ID > a.tar (将整个容器打包)
  15. cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 (将容器打包放到本地镜像)

docker的commit命令

  1. apt-get update 、apt-get -y install vim(在容器中新增vim)
  2. docker commit -m=“修改描述例如:vim cmd add ok” -a=“作者例如zzyy” 容器ID 镜像名字(提交容器实例到本地镜像)
  3. docker pull registry(拉取私有库)

docker本地仓库

  1. docker run -d -p 5000:5000 -v/zzyyuse/myregistry/:/tmp/registry --privileged=true registry(运行本地仓库)
  2. apt-get update、apt-get install net-tools (在容器新增ifconfig等命令)
  3. curl -XGET http://172.30.28.12:5000/v2/_catalog (查询本地仓库)
  4. docker tag ubuntu 172.30.28.12:5000/fzqubuntu (更换镜像名字)
  5. “insecure-registries”: [“172.30.28.3:5000”] (docker默认不允许以http的方式推送镜像,通过配置来取消这个限制,修改完后重启docker)

容器数据卷(数据保存在宿主机的磁盘中)

卷就是目录或文件,存在一个或多个容器中,有docker挂载到容器,但不属于联合文件系统,因此能够绕开union file system提供一些数据存储和共享数据的特性。卷的设计目的就是数据持久化,它完全独立于容器的生命周期,因此docker不会在删除容器时删除其挂载的数据卷。
  1. docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录:(ro只读,rw读写) --name 镜像名 镜像id
  2. docker inspect 容器id
  3. docker run -it --privileged=true --volumes from u1 --name u2 ubuntu (u2继承u1)

docker安装tomcat

  1. docker search tomcat (查找tomcat)
  2. docker pull tomcat:版本号 (拉取tomcat)
  3. docker run -d -p 8080:8080 --name t1 tomcat (运行tomcat,并分配指定端口和设置名字)
  4. docker exec -it 容器id /bin/bash (进入已启动的容器内部)
  5. docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8 (安装版本8的tomcat)

docker安装mysql

1.解决中文乱码问题 2.备份数据
  1. docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(运行mysql)
  2. docker exec -it 容器id /bin/bash
  3. mysql -uroot -p (输入密码进入mysql)
  4. 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/conf:/etc/mysql/conf.d
    -e MYSQL_ROOT_PASSWORD=123456
    –name msyql
    mysql 5.7 (设置数据卷)

docker安装redis

  1. docker exec -it redis /bin/bash;redis-cli (进入redis)
  2. docker run -p 6379:6379 --name mystr3 --privileged=true
    -v /app/redis/redis.conf:/etc/redis/redis.conf
    -v/app/redis/data:/data
    -d redis:6.0.8 redis-server /etc/redis/redis.conf

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值