【docker学习之路】Docker常用命令汇总

从镜像运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID
  • -i: 以交互模式运行容器,通常与 -t 同时使用
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • -P: 随机端口映射,容器内部端口随机映射到主机的高端口
  • -p: 指定端口映射,宿主机端口:容器端口
  • –name=“nginx-lb”: 为容器指定一个名称(方便过滤操作)
  • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致
  • -h “slave-8”: 指定容器的hostname
  • -e useremail=“xxx@123.com”: 设置环境变量
  • –env-file=[]: 从指定文件读入环境变量
  • -m :设置容器使用内存最大值
  • –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
  • –link=[]: 添加链接到另一个容器
  • –expose=[]: 开放一个端口或一组端口
  • –volume , -v: 绑定一个卷

    docker run -p 80:80 -v /data:/data -d nginx:latest
    使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

查看镜像

docker images

  • -q 只输出镜像,可以用于定向操作。

删除指定镜像名[标签]的镜像
docker rmi $(docker images -q --filter=reference=’$CONTAINER_NAME[:$TAG]’)

查看容器进程

docker ps

  • -a 列出包括未运行的所有容器
  • -f :根据条件过滤显示的内容

    根据容器名过滤:
    $ docker ps --filter"name=“oceanbase"
    根据镜像名过滤
    $ docker ps --filter ancestor=nginx
    根据镜像ID过滤
    $ docker ps --filter ancestor=d0e008c6cf02
    根据启动顺序过滤(在某容器启动之前或之后)
    $ docker ps -f since=6e63f6ff38b0

  • -n :列出最近创建的n个容器
  • –no-trunc :不截断输出
  • -q 只显示容器ID
  • -s :显示总的文件大小。

启动容器实例

docker start [OPTIONS] CONTAINER [CONTAINER…]

进入正在运行的容器

docker attach [OPTIONS] CONTAINER

停止容器实例

docker stop [OPTIONS] CONTAINER [CONTAINER…]

重启容器实例

docker restart [OPTIONS] CONTAINER [CONTAINER…]

kill容器

docker kill [OPTIONS] CONTAINER [CONTAINER…]

删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER…]

  • -f :通过 SIGKILL 信号强制删除一个运行中的容器

  • -l :移除容器间的网络连接,而非容器本身

  • -v :删除与容器关联的卷

删除(多个)镜像

docker rmi [OPTIONS] IMAGE [IMAGE…]

  • -f :强制删除;

  • –no-prune :不移除该镜像的过程镜像,默认移除;

暂停容器所有进程

docker pause [OPTIONS] CONTAINER [CONTAINER…]

恢复容器所有进程

docker unpause [OPTIONS] CONTAINER [CONTAINER…]

创建但不启动容器

docker create [OPTIONS] IMAGE [COMMAND] [ARG…]

在容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

  • -d :分离模式: 在后台运行

  • -i :即使没有附加也保持STDIN 打开

  • -t :分配一个伪终端

在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:
$ docker exec -it nginx /bin/sh /tmp/startnginx.sh https://www.baidu.com/

获取容器/镜像的元数据

docker inspect [OPTIONS] NAME|ID [NAME|ID…]

  • -f :指定返回值的模板文件。

  • -s :显示总的文件大小。

  • –type :为指定类型返回JSON。

$ docker inspect 35c2110465d8
[
{
“Id”: “sha256:35c2110465d88b2cdd0bc7a6665422637d0fce9941d4e209523a87fba09e6eae”,
“RepoTags”: [
“cloudfoundry/golang-ci:latest”,
“harbor.domain.com:8088/golang/golang1.12:v1.2”
],
“RepoDigests”: [
“cloudfoundry/golang-ci@sha256:bfd8311e2e225d27f5f4cfd4375e645c1cc7cb55fc17cb263622b5025cdcf64b”
],
“Parent”: “”,
“Comment”: “”,
“Created”: “2020-02-27T16:33:31.068681898Z”,
“Container”: “3e13c0b1659994fed16ad5ef95e22a31b5b22ab9c499143e2bc9bdcb2f13cd47”,
“ContainerConfig”: {
“Hostname”: “”,
“Domainname”: “”,
“User”: “”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [
“PATH=/root/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“HOME=/root”,
“GOPATH=/root/go”
],
“Cmd”: [
“|1”,
“go_version=go1.13.3”,
“/bin/sh”,
“-c”,
“wget -qO- https://dl.google.com/go/${go_version}.linux-amd64.tar.gz | tar -C /usr/local -xzf -”
],
“ArgsEscaped”: true,
“Image”: “sha256:e67d021eb78d22cdf92db67da02040600101f11c157ce8cdf4306f2527745876”,
“Volumes”: null,
“WorkingDir”: “”,
“Entrypoint”: null,
“OnBuild”: null,
“Labels”: null
},
“DockerVersion”: “18.09.6”,
“Author”: “https://github.com/cloudfoundry-incubator/diego-dockerfiles”,
“Config”: {
“Hostname”: “”,
“Domainname”: “”,
“User”: “”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [
“PATH=/root/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“HOME=/root”,
“GOPATH=/root/go”
],
“Cmd”: [
“/bin/bash”
],
“ArgsEscaped”: true,
“Image”: “sha256:e67d021eb78d22cdf92db67da02040600101f11c157ce8cdf4306f2527745876”,
“Volumes”: null,
“WorkingDir”: “”,
“Entrypoint”: null,
“OnBuild”: null,
“Labels”: null
},
“Architecture”: “amd64”,
“Os”: “linux”,
“Size”: 864025235,
“VirtualSize”: 864025235,
“GraphDriver”: {
“Data”: {
“LowerDir”: “/var/lib/docker/overlay2/3ecda8778d83e9d8ee23e812c2bb230b138132aa9246c4530265ca5a792d4617/diff:/var/lib/docker/overlay2/e92d2377af2fdbc0ec9444fc089b13882c9c08f4538a704728e6db730bd6b0b6/diff:/var/lib/docker/overlay2/c4cbbcdad005b84135f7d4553a9861e5f7559e0a5604045f474c317518db83f4/diff:/var/lib/docker/overlay2/66beb7ee5cc63f5ced41390d55354d4b7a7e0751c159e213edeb815c6ae4491d/diff:/var/lib/docker/overlay2/b4701fe809271d4309ef389bdfd044d401a7e404baf33d55e1a1547cec0e537c/diff:/var/lib/docker/overlay2/f4d896735bad6525d4bcc23632a8d0e7e7f928b6eca3d2b84d4ad6dd59b86082/diff”,
“MergedDir”: “/var/lib/docker/overlay2/3042df3ec6ac827dc79775087167f16d2f22dd1a9361ed31714d31308a39bc38/merged”,
“UpperDir”: “/var/lib/docker/overlay2/3042df3ec6ac827dc79775087167f16d2f22dd1a9361ed31714d31308a39bc38/diff”,
“WorkDir”: “/var/lib/docker/overlay2/3042df3ec6ac827dc79775087167f16d2f22dd1a9361ed31714d31308a39bc38/work”
},
“Name”: “overlay2”
},
“RootFS”: {
“Type”: “layers”,
“Layers”: [
“sha256:9e6f810a2aabaa90d8e79f52847c74617a94e78fe223f4f067d84a6bd63b9393”,
“sha256:0040d8f00d7e5afc3a96cbc5f10b21d355e5f0efc03f5eb0e523c5c05fb69356”,
“sha256:aa6685385151f01c1a936ff0b2219539b0f92ebdce8030ff262c88c9ebd294c6”,
“sha256:4ae3adcb66cbcfca0b15c25b144694f6899737dca6867387dfb789e5ba4f1249”,
“sha256:fe239ad8aa2b16b557c6983e8dd95add9bb53ad275a881283aed2975022a330f”,
“sha256:743e294e8429eda2797d9b65fc517b6cb0cd48759dc980932f755cd45bbca5f7”,
“sha256:c08408accd402bd6d4ac58e86f8f2698bb4356b2671a2a736b7e20712a9a6fe4”
]
},
“Metadata”: {
“LastTagTime”: “2020-02-28T09:31:58.5840111Z”
}
}
]

获取正在运行的容器con-012的 IP。

docker inspect --format=’{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ con-012
172.17.0.2

查看正在运行容器的进程

docker top :查看容器中运行的进程信息,支持 ps 命令参数。

获取容器日志

docker logs [OPTIONS] CONTAINER

  • -f : 跟踪日志输出

  • –since :显示某个开始时间的所有日志

  • -t : 显示时间戳

  • –tail :仅列出最新N条容器日志

获取容器8cf91d3e269a的最近三条日志并加时间戳
$ docker logs -t --tail 3 8cf91d3e269a  SIGINT(2) ↵  1260  11:02:18
2020-02-28T08:12:46.989643700Z INFO[0000] Redis Metrics Exporter <<< filled in by build >>> build date: <<< filled in by build >>> sha1: <<< filled in by build >>> Go: go1.12.12 GOOS: linux GOARCH: amd64
2020-02-28T08:12:46.989696100Z INFO[0000] Providing metrics at :9121/metrics

提交容器修改(从容器创建一个新的镜像)

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

  • -a :提交的镜像作者;

  • -c :使用Dockerfile指令来创建镜像;

  • -m :提交时的说明文字;

  • -p :在commit时,将容器暂停

将容器8cf91d3e269a 保存为新的镜像,并添加提交人信息和说明信息
$ docker commit -a “Enzo” -m “upgrade nginx” 8cf91d3e269a nginx:v1.2

数据拷贝

docker cp [OPTIONS] /path/to/src_file CONTAINER:/path/to/dest_file

将本地文件/go/app1 拷贝到容器8cf91d3e269a的/cache/app1
$ docker cp /go/app1 8cf91d3e269a:/cache/app1

登录镜像仓库

docker login [OPTIONS] [SERVER]

  • -u 用户名
  • -p 密码

以用户名Alex登录Docker Hub
$ docjer login -u Alex -p alex12345

$ docjer login
以交互形式输入用户名密码

以用户名Alex登录harbor.abc.com仓库(私有仓库)
$ docjer login -u Alex -p alex12345 harbor.abc.com

注销登录

docker logout

查看指定镜像的创建历史

docker history [OPTIONS] IMAGE

  • -H :以可读的格式打印镜像大小和日期,默认为true;

  • –no-trunc :显示完整的提交记录;

  • -q :仅列出提交记录ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值