Docker常用命令

Mr.LR2022年11月20日
大约 5 分钟

Docker常用命令

Docker安装

确定CentOS7及以上版本

cat /etc/redhat-release

卸载旧版本

https://docs.docker.com/engine/install/centos/open in new window

image-20221122230033375 安装gcc相关

yum -y install gcc

yum -y install gcc-c++

安装需要的软件包

yum install -y yum-utils

配置yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引

yum makecache fast

安装docker

yum -y install docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

配置Docker镜像加速地址

mkdir -p /etc/docker
#注意地址用自己阿里云账号获取的加速地址
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://a8kj0lob.mirror.aliyuncs.com"]
}
EOF

重启docker

systemctl restart docker

Docker基础命令

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

Docker镜像命令

列出镜像

docker images

OPTIONS说明:

  • -a :列出本地所有的镜像(含历史映像层)
  • -q :只显示镜像ID。

image-20221123180937969

  1. REPOSITORY:表示镜像的仓库源
  2. TAG:镜像的标签版本号
  3. IMAGE ID:镜像ID
  4. CREATED:镜像创建时间
  5. SIZE:镜像大小

搜索镜像

docker search 某个XXX镜像名字

下载镜像

docker pull 镜像名字[TAG]
#下载 nginx 版本为1.14 如果没有写版本,则默认为 latest 即最新版本
docker pull nginx:1.14

查看镜像/容器/数据卷所占的空间

docker system df

删除镜像

#删除单个镜像
docker rmi  -f 镜像ID
#删除多个 
docker rmi -f 镜像名1:TAG 镜像名2:TAG 

Docker容器命令

新建+启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#新建容器并启动rabbitmq  并指定 用户密码
docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq

#新建并启动nginx 并挂载配置文件和一个文件夹
docker run -d --name nginx_docker  -p 1999:1999   -v /home/nginx_test:/opt/nginx_data -v /home/nginx.conf:/etc/nginx/nginx.conf nginx:1.14
  • -p:将宿主机和容器端口进行映射,格式为:宿主机端口:容器端口;
  • --name:指定容器名称,之后可以通过容器名称来操作容器;
  • -e:设置容器的环境变量,例如制定容器内软件的用户名密码
  • -v:将宿主机上的文件挂载到宿主机上,格式为:宿主机文件目录:容器文件目录;其中挂载时,最好宿主机先把目录、文件等创建好,如果宿主机没有目录会自动创建。如果没有文件,会创建文件名格式的目录(这样是错误的)。
  • -d:表示容器以后台方式运行。

如果容器运行失败,则通过日志查看

docker logs 容器id
#动态查看
docker logs -f 容器id

列出容器

#列出所有正在运行的容器
docker ps
#列出容器名为 rabbitmq的容器
docker ps -f name=rabbitmq 
#列出所有容器,包括运行失败、未运行
docker ps -a 

进入/退出容器

#进入
docker exec -it 容器ID /bin/bash
#退出
exit;

启动/停止容器

#启动已停止运行的容器
docker start 容器ID或者容器名
#停止容器
docker stop 容器ID或者容器名
#重启容器 
docker restart 容器ID或者容器名
#强制停止容器
docker kill 容器ID或容器名

删除容器

docker rm 容器ID

拷贝文件

#从容器里面拷文件到宿主机
docker cp 容器名:要拷贝的文件在容器里面的路径   要拷贝到宿主机的相应路径 
#从宿主机拷文件到容器里面
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

查看容器的IP地址

#查看容器的IP地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerName

将容器启动方式改为always

docker container update --restart=always $ContainerName

同步宿主机时间到容器

docker cp /etc/localtime $ContainerName:/etc/

查看容器资源占用状况

  • 查看指定容器资源占用状况,比如cpu、内存、网络、io状态:
docker stats $ContainerName
  • 查看所有容器资源占用情况:
docker stats -a

容器网络相关

  • 查看所有网络
docker network ls
  • 容器网络主要解决容器之间互相通信的问题。因此一般在在新建容器时,制定当前容器的网络模式

  • 常用的网络模式有:

    • bridge模式:使用--network bridge指定,默认使用该模式
    • host模式:使用--network host指定
    • container模式:使用--network container:NAME或者容器ID指定
#以host模式启动eureka容器,注:该模式不需要指定端口映射
docker run -d  --network host --name eureka eureka:1.1

#启动eureka容器
docker run  --name eureka -p 1111:1111 -p 2222:2222  -d eureka:1.1
#启动auth容器,并指定网络为容器eureka的网络
docker run  --name auth  --network container:eureka -d auth:1.1

也可以新建自定义网络,让容器指定自定义的网络

docker network create test_network

docker run -d -p 1111:1111 --network test_network  --name eureka  eureka:1.1

Docker容器清理

#查看Docker占用的磁盘空间情况
docker system df
#删除所有关闭的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
#删除所有dangling数据卷(即无用的 volume):
docker volume rm $(docker volume ls -qf dangling=true)

Dockerfile

Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

实例

# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER lr
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为eureka_docker.jar
ADD eureka.jar eureka_docker.jar
# 运行jar包
RUN bash -c 'touch /eureka_docker.jar'
ENTRYPOINT ["java","-Xms100m", "-Xmx256m", "-jar","/eureka_docker.jar","--spring.profiles.active=dev"]
#暴露1951端口作为微服务
EXPOSE 1951

在Dockerfile目录下构建镜像

docker build -t eureka:1.1 .
上次编辑于: 2022/11/30 21:16:51
贡献者: liurui