Docker常用命令

一、基础操作

1、查看docker版本
bash 复制代码
docker version
2、显示docker系统的信息
bash 复制代码
docker info
3、显示docker运行状态(故障检查)
bash 复制代码
service docker status
4、启动docker服务
bash 复制代码
service docker start
5、停止docker服务
bash 复制代码
service docker stop
6、重启docker服务
bash 复制代码
service docker restart

二、镜像操作

1、拉取官方的 Ubuntu 镜像
bash 复制代码
docker pull ubuntu
2、查看本地所有镜像
bash 复制代码
docker images
3、删除镜像(<image_id> 是通过 docker images 命令得到的)
bash 复制代码
docker rmi <image_id>
4、构建镜像('.' 表示使用当前目录下的 Dockerfile 来构建镜像)
bash 复制代码
docker build -t my_image .
5、重命名镜像
bash 复制代码
docker tag my_image my_new_image
6、镜像推送到私有仓库
bash 复制代码
# 标记本地镜像以便推送到私有仓库
docker tag my-image myregistry.example.com:5000/my-image

# 推送镜像到私有仓库
docker push myregistry.example.com:5000/my-image

# 从私有仓库拉取镜像
docker pull myregistry.example.com:5000/my-image
7、查看指定镜像的创建历史
bash 复制代码
docker history [image_id]
8、指定镜像保存成 tar 归档文件, docker load 的逆操作
bash 复制代码
docker save
9、将镜像 ubuntu:14.04 保存为 ubuntu14.04.tar 文件
bash 复制代码
docker save -o ubuntu14.04.tar ubuntu:14.04
10、从 tar 镜像归档中载入镜像, docker save 的逆操作
bash 复制代码
docker load
11、上面命令的意思是将 ubuntu14.04.tar 文件载入镜像中
bash 复制代码
docker load -i ubuntu14.04.tar
docker load < /home/save.tar
12、构建自己的镜像
bash 复制代码
docker build -t <镜像名> <Dockerfile路径>
docker build -t xx/gitlab .

三、容器操作

1、查看当前运行的容器
bash 复制代码
docker ps
2、查看全部容器
bash 复制代码
docker ps -a
3、查看全部容器的id和信息
bash 复制代码
docker ps -a -q
4、查看全部容器占用的空间
bash 复制代码
docker ps -as
5、查看一个正在运行容器进程,支持 ps 命令参数
bash 复制代码
docker top
6、查看容器的示例id
bash 复制代码
sudo docker inspect -f  '{{.Id}}' [id]
7、检查镜像或者容器的参数,默认返回 JSON 格式
bash 复制代码
docker inspect
8、查看容器日志
bash 复制代码
docker logs -f <容器名称orID>
9、保存某个容器成为一个镜像
bash 复制代码
docker commit -a "user" -m "commit info" [CONTAINER] [imageName]:[imageTag]
10、推送一个容器到中心仓库
bash 复制代码
# 登录
docker login --username=[userName] --password=[pwd] [registryURL]
docker tag [imageID] [remoteURL]:[imageTag]
docker push [remoteURL]:[imageTag]
11、拉取提交的容器
bash 复制代码
docker pull [remoteURL]:[imageTag]
12、对比容器的改动
bash 复制代码
docker diff
13、创建一个容器命名为 test
bash 复制代码
# 使用镜像daocloud.io/library/ubuntu
docker create -it --name test daocloud.io/library/ubuntu
14、创建并启动一个容器 名为 test
bash 复制代码
# 使用镜像daocloud.io/library/ubuntu
docker run --name test daocloud.io/library/ubuntu
15、删除一个容器
bash 复制代码
docker rm [容器id]
16、删除所有容器
bash 复制代码
docker rm `docker ps -a -q`
17、根据Dockerfile 构建
bash 复制代码
docker build -t [image_name] [Dockerfile_path]
18、把一个正在运行的容器保存为镜像
bash 复制代码
docker commit <CONTAIN-ID> <IMAGE-NAME>
19、启动、停止、重启容器
bash 复制代码
docker start|stop|restart [id]
20、暂停、恢复某一容器的所有进程
bash 复制代码
docker pause|unpause [id]
21、杀死一个或多个指定容器进程
bash 复制代码
docker kill -s KILL [id]
22、停止全部运行的容器
bash 复制代码
docker stop `docker ps -q`
23、杀掉全部运行的容器
bash 复制代码
docker kill -s KILL `docker ps -q`
24、交互式进入容器
bash 复制代码
sudo docker exec -it {{containerName or containerID}} /bin/bash
sudo docker exec -i {{containerName or containerID}} /bin/bash
sudo docker exec -t {{containerName or containerID}} /bin/bash
sudo docker exec -d {{containerName or containerID}} /bin/bash

只用 -i 参数,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取。

只用 -t 参数,则可以看到一个 console 窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况。

使用 -it 时,则和我们平常操作 console 界面类似,而且也不会像attach方式因为退出,导致整个容器退出。

使用 -d 参数,在后台执行一个进程。如果一个命令需要长时间进程,会很快返回

25、查看容器的root用户密码
bash 复制代码
docker logs <容器名orID> 2>&1 | grep '^User: ' | tail -n1
26、容器于宿主拷贝文件
bash 复制代码
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
27、本地文件上传到对应容器的目录
bash 复制代码
docker cp local.sh [CONTAINERid]:[TagPath]

四、重点看一下docker run的参数

1、后台运行 centos6-ssh 这个容器(-d)、并将容器内部的22端口映射到宿主机的63301端口
bash 复制代码
docker run -d -p 192.168.0.2:63301:22 centos6-ssh
2、run 命令的参数解释
bash 复制代码
-a, --attach=[]:指定要附加到的标准输入、输出或错误输出。

--add-host=[]:添加自定义主机到 IP 映射。

--blkio-weight=0:块 I/O 的相对权重。

-c, --cpu-shares=0:CPU 份额(相对权重)。

--cap-add=[]:添加 Linux 能力。

--cap-drop=[]:去除 Linux 能力。

--cgroup-parent=:容器的可选父 cgroup。

--cidfile=:将容器 ID 写入文件。

--cpu-period=0:限制 CPU CFS(完全公平调度器)周期。

--cpu-quota=0:限制 CPU CFS 配额。

--cpuset-cpus=:允许在其中执行的 CPU(0-3、0、1),绑定容器到指定 CPU。

--cpuset-mems=:允许在其中执行的 MEM(0-3、0、1),绑定容器到指定 MEM。

-d, --detach=false:在后台运行容器并打印容器 ID。

--device=[]:向容器添加主机设备。

--dns=[]:设置自定义 DNS 服务器。

--dns-search=[]:设置自定义 DNS 搜索域。

-e, --env=[]:设置环境变量。

--entrypoint=:覆盖镜像的默认入口点。

--env-file=[]:从指定文件读取环境变量。

--expose=[]:暴露一个或一系列端口。

-h, --hostname=:指定容器的主机名。

--help=false:打印使用说明。

-i, --interactive=false:即使未附加也保持 STDIN 打开,通常与 -t 一起使用。

--ipc=:IPC 命名空间。

-l, --label=[]:在容器上设置元数据。

--label-file=[]:读取标签的行分隔文件。

--link=[]:添加到另一个容器的链接。

--log-driver=:容器的日志驱动程序。

--log-opt=[]:日志驱动程序选项。

--lxc-conf=[]:添加自定义 lxc 选项。

-m, --memory=:内存限制。

--mac-address=:容器的 MAC 地址。

--memory-swap=:总内存(内存+交换空间),-1 表示禁用交换空间。

--name=:为容器指定名称。

--net=bridge:设置容器的网络连接模式,支持 bridge/host/none/container:<name|id> 四种类型。

--oom-kill-disable=false:禁用 OOM 杀手。
相关推荐
老司机张师傅13 分钟前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
微信-since8119220 分钟前
[ruby on rails] 安装docker
后端·docker·ruby on rails
blessing。。28 分钟前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
2202_7544215443 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
努力的悟空1 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
运维&陈同学1 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗2 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
lwprain3 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat