Docker常用命令

常用地址

https://www.docker.com/products/docker-hub/

Docker常用命令

基本指令

# 查看版本信息
docker version

# 显示统信息,包括镜像和容器数
docker info

# 帮助命令
docker --help

# 容器资源使用情况
docker stats
docker stats <container_name_or_id>

镜像操作

# 查看镜像
docker images

# 查看镜像-包含中间镜像层
docker images -a

# 删除单个镜像
docker rm 容器id

# 拉取镜像
docker pull 镜像名称:版本号

# 启动镜像
docker run -it 远程镜像名称:版本号 /bin/bash \
    # 为容器指定一个名称
    --name="容器新名字" \
    # 后台运行容器,并返回容器ID,也即启动守护式容器
    -d \ 
    # 以交互模式运行容器,通常与 -t 同时使用
    -i \
    # 为容器重新分配一个伪输入终端,通常与 -i 同时使用
    -t \
    # 随机端口映射
    -P \
    # 指定端口映射
    -p 9200:9200 \

-d: 后台运行容器并返回容器 ID。
-it: 交互式运行容器,分配一个伪终端。
--name: 给容器指定一个名称。
-p: 端口映射,格式为 host_port:container_port。
-v: 挂载卷,格式为 host_dir:container_dir。
--rm: 容器停止后自动删除容器。
--env 或 -e: 设置环境变量。
--network: 指定容器的网络模式。
--restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)。
-u: 指定用户。

# 删除所有镜像
docker rmi `docker images -q`

容器操作

# 查看正在运行容器
docker ps

# 查看所有容器
docker ps -a

# 启动容器
docker start 容器ID或者容器名

# 重启容器
docker restart 容器ID或者容器名

# 停止容器
docker stop 容器ID或者容器名

# 强制停止容器
docker kill 容器ID或者容器名

# 停用全部运行中的容器
docker kill $(docker ps -a -q)

# 删除容器
docker rm -f 容器ID或者容器名

# 删除全部容器
docker rm -f $(docker ps -aq)

# 进入容器内部
docker exec -it 容器ID或者容器名 /bin/bash

# 推出容器
exit

# 容器详细信息
docker inspect <container_name_or_id>

容器转为镜像流程

docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load –i 压缩文件名称   例如:docker load -i envoy-1.26.1.tar.gz

数据卷容器

# 数据卷未映射时,默认存储位置
cd /var/lib/docker/volumes

# 创建启动c1数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name c1 –v /volume centos:7 /bin/bash
# 创建启动 c2 c3 容器,使用 –-volumes-from 参数 设置数据卷
docker run –it --name=c2 --volumes-from c1 centos:7 /bin/bash
docker run –it --name=c3--volumes-from c1 centos:7 /bin/bash

# 案例:执行完之后三个容器挂载在宿主机同一个数据卷下
# 比如:/06f881244d61ebd6e36992c8186fc944ba4f609d966b8668d7522710e6ed3c7e/_data
docker run -it --name c3 -v /volume centos:7
docker run -it --name c1 --volumes-from c3 centos:7
docker run -it --name c2 --volumes-from c3 centos:7

文件操作

# docker容器内文件复制
docker container cp nginx:/etc/nginx ~/nginx/
docker container cp nginx:/usr/share/nginx/html/cert ~/nginx/html/cert

# 在宿主机上打包目录
tar -cvf halo.tar /root/halo  

# 将tar文件复制到容器内
docker cp halo.tar halo-blog:/tmp/

# 进入容器内并解压tar文件
docker exec -it halo-blog bash -c "mkdir -p /app/static/halo && tar -xvf /tmp/halo.tar -C /app/static/halo"  

# 删除容器内的tar文件
docker exec -it halo-blog rm /tmp/halo.tar

linux安装 Docker

安装

# yum 包更新到最新
yum update

# 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast

# 安装docker,出现输入的界面都按 y
yum install -y docker-ce

# 查看docker版本,验证是否验证成功
docker -v

卸载

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce

启动

# docker用的端口较多,关闭防火墙,或者开启全部端口1/68783
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 启动docker
systemctl start docker
# 查看版本
docker -v

Macos安装 Docker 和 Docker Compose

#安装docker自带dockercompose

sudocurl-L"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)"-o/usr/local/bin/docker-compose

echo'exportPATH="/usr/local/bin:$PATH"'>>~/.bash_profile
source~/.bash_profile

docker-compose-version
dockercompose-version

linux安装 Docker Compose

安装

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 或者换源加速下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

# 权限
chmod +x /usr/local/bin/docker-compose

# 版本
docker-compose -version

# 软链
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# Base自动补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
# 如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

卸载

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

配置国内镜像源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://cr.console.aliyun.com",
        "https://docker.nju.edu.cn",
        "https://ustc-edu-cn.mirror.aliyuncs.com/",
        "https://ccr.ccs.tencentyun.com/",
        "https://docker.registry.cyou",
        "https://docker-cf.registry.cyou",
        "https://docker.jsdelivr.fyi",
        "https://dockercf.jsdelivr.fyi",
        "https://dockertest.jsdelivr.fyi",
        "https://dockerpull.com",
        "https://dockerproxy.cn",
        "https://hub.uuuadc.top",
        "https://docker.1panel.live",
        "https://hub.rat.dev",
        "https://docker.anyhub.us.kg",
        "https://docker.chenby.cn",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn",
        "https://docker.hpcloud.cloud",
        "https://atomhub.openatom.cn"
    ]
}
EOF

重启docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker

Docker创建自定义网络

(用于容器之间的通信 common-network 是网络名称 可改)

docker network create common-network 创建自定义网络(用于容器之间的通信 common-network 是网络名称 可改)

docker network ls 查看网络

docker network rm 名称 删除自定义网络

img_150.png

Docker-Run命令部署容器

部署Waline

部署Nginx

部署Elasticsearch

部署CentOS

部署Cloudreve

部署Docker-Registry本地私库

部署Hexo博客

部署Jenkins

部署Kibana

部署MongoDB

部署Nacos

部署Nacos集群

部署RabbitMQ

部署Tomcat

部署WordPress

Docker-Compose部署容器

部署WordPress

Dockerfile

# 该镜像需要依赖的基础镜像
FROM openwhisk/java8action:ff19223
# 将当前目录下的jar包复制到docker容器的/目录下
ADD sundear-admin.jar /sundear-admin.jar
# 运行过程中创建一个mall-tiny-docker-file.jar文件
RUN bash -c 'touch /sundear-admin.jar'
# 声明服务运行在8080端口
EXPOSE 8500
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/sundear-admin.jar"]
# 指定维护者的名字
MAINTAINER zhangxin

img_155.png

执行

# 通过dockerfile构建镜像:(注意后面的 空格+.) 
# docker bulid –f dockerfile文件路径 –t 镜像名称:版本
cd /app
docker build -t garlic/sundear-admin:3.8.3 .

# docker run 创建容器
docker rm -f sundear-admin
docker run -p 8500:8500 --name sundear-admin \
  -v /etc/localtime:/etc/localtime \
  -v /mydata/app/sundear-admin/logs:/var/logs \
  -v /mydata/app/sundear-admin/uploadPath:/home/ruoyi/uploadPath \
  -d garlic/sundear-admin:3.8.3

其他dockerfile示例

# 需求:自定义centos7镜像。要求: 1. 默认登录路径为 /usr 2. 可以使用vim
# 定义父镜像
FROM centos:7
# 定义作者信息:
MAINTAINER itheima [itheima@itcast.cn](mailto:itheima@itcast.cn)
# 执行安装vim命令: 
RUN yum install -y vim
# 定义默认的工作目录:
WORKDIR /usr
# 定义容器启动执行的命令:
CMD /bin/bash

# 需求:定义dockerfile,发布springboot项目
FROM java:8
MAINTAINER itheima [itheima@itcast.cn](mailto:itheima@itcast.cn)
ADD springboot.jar app.jar
# 定义容器启动执行的命令:
CMD java–jar app.jar

Dockerfile关键字

关键字作用备注
FROM指定父镜像指定dockerfile基于那个image构建
MAINTAINER作者信息用来标明这个dockerfile谁写的
LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
CMD容器启动命令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
ENTRYPOINT入口一般在制作一些执行就关闭的容器中会使用
COPY复制文件build的时候复制文件到image中
ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG构建参数构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE暴露端口定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR工作目录指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK健康检查指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shellDocker 应用部署


标题:Docker常用命令
作者:Curry
地址:http://bolo.it-cxy.top/articles/2024/09/22/1727006078807.html

    评论
    0 评论
avatar

取消