制作镜像
//当前目录下有默认的Dockerfile文件生成镜像
docker build .
//当前目录下有自定义的Dockerfile-xxx文件生成镜像
docker build -f ./Dockerfile-xxx
//当前目录下有自定义的Dockerfile-xxx文件生成镜像,并定义tag名称xxx.xx
docker build -f ./Dockerfile-xx -t xxx.xxx
镜像打标签
//给镜像07c7f6c12184488bb31f57d228f40b38:temp 打标签
docker tag 07c7f6c12184488bb31f57d228f40b38:temp harbor.dev.net/oms-stg/cart-service:20220822
推送镜像到镜像仓库
//推送镜像到harbor仓库
docker push harbor.dev.net/oms-stg/cart-service:20220822
拉取镜像
docker pull harbor.dev.net/oms-stg/cart-service:20220822
删除镜像
docker rmi harbor.dev.net/oms-stg/cart-service:20220822
//强制删除镜像
docker rmi -f harbor.dev.net/oms-stg/cart-service:20220822
启动容器
//以交互方式启动容器
docker run -it harbor.dev.net/oms-stg/cart-service:20220822 /bin/bash
//以后台的方式启动容器,映射到宿主机的端口号为2222
docker run -d -P 2222 harbor.dev.net/oms-stg/cart-service:20220822
//启动一个已停止的容器,b750bbbcfd88容器ID
docker start b750bbbcfd88
进入容器
docker exec -it b750bbbcfd88 /bin/bash
停止容器
docker stop b750bbbcfd88
重启容器
docker restart b750bbbcfd88
容器备份&还原
//导出容器作为备份
docker export b750bbbcfd88 > test2022.tar
//导入快照,并生成镜像为test/2022:v1
cat docker/test2022.tar | docker import - test/2022:v1
##宿主机目录 /www/runoob复制到容器目录/www下
docker cp /www/runoob 96f7f14e99ab:/www
##容器目录/www数据复制到宿主机目录/tmp下
docker cp 96f7f14e99ab:/www /tmp/
删除容器
docker rm b750bbbcfd88
//强制删除容器
docker rm -f b750bbbcfd88
查看容器
//查看所有状态的容器
docker ps -a
//查询运行状态的容器
docker ps
查看容器详细配置
docker inspect b750bbbcfd88
查看容器内存、CPU使用率
//查询所有容器当前CPU、内存、网络IO的消耗情况
docker stats
//查看某一个容器内部所有运行的进程的CPU、内存占用情况
docker top 133bbfc63f19
查看容器端口绑定情况
docker port 133bbfc63f19
查看容器日志
//实时查看日志
docker logs -f 133bbfc63f19
//离线查看一段日志内容
docker logs --tail=500 133bbfc63f19
//查看从指定时间2022-08-23到现在的日志内容
docker logs -f --since “2022-08-23” 133bbfc63f19
##通过docker所在的宿主机的目录查看容器的运行日志
cd /var/lib/docker/containers
然后根据上图所示的容器ID 进入对应的目录
cd 6160a274f44a2b350c4c053a1032ff0c7ac5bbe5583da5121017f13aae520767
容器扩容
//第1步,停止容器
docker stop 98b37f0e33d2
//第2步,增加内存限制
docker update -m 4G --memory-swap -1 98b37f0e33d2
//第3步,启动容器
docker start 98b37f0e33d2
容器局部网络搭建
//查询容器目前所有的局部网络
docker network ls
//新建一个局域网络mynet
docker network create mynet
//将容器nginx连接到一个mynet网络
docker network connect mynet nginx
//将容器nginx从mynet网络中退出
docker network disconnect mynet nginx
容器挂载目录或文件
//挂载多个目录文件
docker run -it -v 本地路径1:容器路径1 -v 本地路径2:容器路径2 容器名
如上图所示如果出现挂载的目录没有权限的问题,则可以通过如下几种方式解决:
1、在运行时加 --privileged=true
docker run -it -v 本地路径1:容器路径1 -v 本地路径2:容器路径2 --privileged=true 容器名
2、临时关闭selinux然后再打开
setenforce 0
setenforce 1
3、添加linux规则,把要挂载的目录添加到selinux白名单
chcon -Rt svirt_sandbox_file_t 本地路径