docker images【options】 查看本地镜像 -a 列出本地所有的镜像 -q 只显示镜像ID --digests 显示镜像的摘要信息 --no-trunc 显示完整的镜像信息 docker ps【options】 查看当前运行了的容器 -a 显示当前所有正在运行的容器 +历史上运行了的容器 -l 显示最近创建了的容器 -n x 显示最近x个创建的容器 -q 静默模式,只显示容器编号 --no-trunc 显示完整信息 exit 容器停止且退出 ctrl+P+Q 容器停止不退出 docker kill 容器名|容器编号 强制停止容器 docker stop 容器名|容器编 停止容器 docker start 容器名|容器编号 启动容器 docker restart 容器名|容器编号 重启容器 docker rm 容器名|容器编号 删除容器 docker rm -f $(docker ps -aq) 删除$()语句查询出来的容器 docker search -f stars=30 tomcat 在仓库查找名为tomcat的镜像,且stars数大于30 docker rmi -f XX1 XX2 强制删除多个镜像 docker rmi -f $(docker images -qa) 复合删除语句,删除$()中的语句查询出来的镜像 docker image prune -a 删除没有运行实例的镜像 docker system prune -f 清除 docker 缓存 docker run 【options】 例:docker run -it centos:latest /bin/bash -d 后台运行容器,并返回容器id,也即启动守护式容器 --name 为运行的容器指定一个新名称 -i 以交互模式运行容器,通常与 -t 一同使用 -t 为容器分配一个伪输入终端 -p 随即端口映射 -p 暴露给外部的端口号:内部端口号 例:-p 8888:8080 指定端口映射有以下四种格式 ip:hostPort:containerPort ip:containerPort hostPort:containerPort containerPOrt docker logs 【options】 容器id -f 加入时间戳 -t 跟随最新的日志打印 --tail n 显示最后n条记录 docker exec 【options】容器id bash -c shell命令 用容器运行shell命令,在本机直接显示结果,不需要进入容器 docker exec 【options】容器id 进入容器 docker attach 容器id 进入容器 exec直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止 attach 是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止 redis-cli -p 6379在进入redis交互后,敲这个命令可以直接操作redis docker cp 容器id:路径1/file1 /路径2 把容器中的file1复制到路径2中,路径2也可以是容器 docker export 容器id >文件名.tar 导出容器的内容作为一个tar归档文件,对应import命令 cat 文件名.tar |docker import -镜像用户/镜像名:镜像版本号 import从tar包中的内容创建一个新的文件系统再导入为镜像 docker commit -a="作者" -m=“提交信息” 容器id 新镜像名:版本号 提交镜像 例:docker commit -a="mo" -m="hello" a3c898a5b956 moloom/tomcat:1.1 docker run -it -v /宿主机目录:/容器内目录 镜像名 宿主机和容器建立同步文件夹 docker run -it -v /宿主机目录:/容器内目录:ro 镜像名 宿主机和容器建立同步文件夹(只读),容器内的同步文件只可读 --privileged=true 扩大容器的权限,解决挂载目录没有权限的问题(加在-it后面) docker tag 镜像:Tag Host:Port/Repository:Tag 将镜像修改为符合私人仓库规范的Tag(Host是本机的Ip地址) 例:docker tag my_ubuntu:1.2 192.168.0.102:5000/my_ubuntu:1.2 docker update -m 20M --memory-reservation 20M --memory-swap 20M nginx 修改运行时的参数 --cpu-period=100000 --cpu-quota=20000 cpu限制,允许使用20000/100000的百分比 docker save nginx >./nginx.tar 保存docker 镜像文件到本地 docker load < nginx.tar 在另一台主机加载本地文件到镜像 ,加载镜像后,镜像名和标签都是none,需要docker tag修改 Dockerfile 文件参数详解: FORM 基础镜像,指定一个已经存在的镜像作为模板 MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 后面跟shell命令,或者跟["shell命令","arg1","arg2"]执行命令;在docker build时运行 EXPOSE 向外暴露端口 WORKDIR 指定进镜像后的入口地址 USER 指明该镜像以什么用户执行,默认root ENV 运行时环境变量,例:DIR /usr/local VOLUME 容器数据卷,用户数据持久化工作 ADD 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包 COPY 类似ADD,不提供自动解压功能 CMD 指定容器启动后要干的事情,一个文件可以有多个CMD,但只有最后一个生效,CMD会被docker run 之后的命令替换;在docker run时运行 ENTRYPOINT 指定容器启动后要干的事情,不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数给ENTRYPOINT指定的程序 docker build -t 镜像名字:TAG ./ 执行Dockerfile文件生成镜像。 docker images ls -f dangling=true 查看虚悬镜像 docker images prune 删除所有的虚悬镜像 docker-compose -h 查看帮助 docker-compose up 启动所有docker-compose服务 docker-compose up -d 后台启动所有docker-compose服务 docker-compose down 停止并删除容器、网络、卷、镜像 docker-compose exec yml中的服务id bash 进入容器实例内部的服务 docker-compose ps 查看编排过的所有容器 docker-compose top 查看当前docker-compose 容器进程 docker-compose logs yml中的服务id 查看容器输出日志 docker-compose config 查看配置 docker-compose config -q 检查配置,出错才有输出 docker-compose restart 重启 docker-compose start docker-compose stop docker inspect 容器id 查看容器信息 docker top 容器id 打印容器运行使用资源的info docker stats 容器id 实时查看容器使用资源信息 docker update --restart=no 设置容器不要开机自启动 --restart参数= no 默认策略,在容器退出时不重启容器 on-failure 在容器非正常退出时(退出状态非0),才会重启容器 on-failure:3 在容器非正常退出时重启容器,最多重启3次 always 在容器退出时总是重启容器,stop后不会重启 unless-stopped 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器 docker push 192.168.0.104:8080/nginx:1.0 推送image到私有仓库 docker pull billygoo/tomcat8-jdk8 拉取一个tomcat8 docker run -p 3307:3306 -e MYSQL_ROOT_PASSWORD=mo -d mysql:5.7 简单版 运行mysql5.7 docker 和docker-compose都可以用pacman安装!!! 简化版官方镜像仓库;registry-data数据卷是私有镜像库存放数据的目录 docker run -d \ --restart=always \ --name registry \ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry 带有图形界面的官方镜像仓库DockerRegistry ```yaml version: '3.0' services: registry: image: registry volumes: - ./registry-data:/var/lib/registry ui: image: joxit/docker-registry-ui:static ports: - 8080:80 environment: - REGISTRY_TITLE=mo - REGISTRY_URL=http://registry:5000 depends_on: - registry ``` 配置docker信任地址;私服采用的是http协议,默认不被Docker信任 ```bash # 打开要修改的文件 vi /etc/docker/daemon.json # 添加内容: "insecure-registries":["http://192.168.150.101:8080"] # 重加载 systemctl daemon-reload # 重启docker systemctl restart docker ``` 运行mysql5.7 若内存占用过高就在my.conf文件中添加--innodb-buffer-pool-size=64M docker run -d -p 3306:3306 --restart=always \ --privileged=true -m 2048M\ -v /tem/oj-mysql/log:/var/log/mysql \ -v /tem/oj-mysql/data:/var/lib/mysql \ -v /tem/oj-mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=mo \ -e MYSQL_ALLOW_EMPTY_PASSWORD=no \ --name oj-mysql mysql:5.7 运行redis docker run -p 6379:6379 --restart=always \ --privileged=true -m 2048M\ -v /tem/oj-redis/redis.conf:/etc/redis/redis.conf \ -v /tem/oj-redis/data:/data \ --name oj-redis \ -d redis:6.0.8 redis-server /etc/redis/redis.conf //让redis-server服务去使用/etc/下的配置文件 运行nginx docker run -p 8080:80 --name nginx \ -v /tem/study-nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /tem/study-nginx/conf/conf.d:/etc/nginx/conf.d \ -v /tem/study-nginx/html:/usr/share/nginx/html \ -v /tem/study-nginx/logs:/var/log/nginx \ -d nginx:1.21.6 docker run -p 6379:6379 --name oj-redis \ -v /tem/oj-redis/data:/data \ -d redis:6.0.8 redis-server --appendonly yes mysql主从配置 create User 'slave'@'%'IDENTIFIED BY 'mo'; grant REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%'; change master to master_host='192.168.0.102', master_user='slave', master_password='mo' , master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30; start slave; //启动主从同步