3、docker基础命令

docker基础命令

容器运行

命令格式:

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

范例:

# 当前已有镜像
# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   19 months ago   141MB
debian       latest    6f4986d78878   19 months ago   124MB
alpine       latest    c059bfaa849c   20 months ago   5.59MB
ubuntu       latest    ba6acccedd29   22 months ago   72.8MB
centos       latest    5d0da3dc9764   23 months ago   231MB
nginx        1.18.0    c2c45d506085   2 years ago     133MB
nginx        1.8.1     0d493297b409   7 years ago     133MB

#运行容器且进入到容器
root@ubuntu-n1:~# docker run -it centos 
[root@7631cf487fb9 /]#
或
root@ubuntu-n1:~# docker run -it centos bash
[root@1bf6e71e564e /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@1bf6e71e564e /]# cat /etc/redhat-release 
CentOS Linux release 8.4.2105

#退出容器不注销 ctrl+p+q

显示容器运行状况

root@ubuntu-n1:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
1bf6e71e564e   centos    "bash"    8 minutes ago   Up 8 minutes             gracious_johnson

#显示所有容器
root@ubuntu-n1:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
1bf6e71e564e   centos    "bash"        9 minutes ago    Up 9 minutes                         gracious_johnson
7631cf487fb9   centos    "/bin/bash"   10 minutes ago   Exited (0) 9 minutes ago             upbeat_sanderson

随机映射端口

#前台启动并随机映射本 地端口到容器的 80
root@ubuntu-n1:~# docker run -P nginx:1.8.1
192.168.75.1 - - [08/Aug/2023:07:45:21 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188" "-"
2023/08/08 07:45:21 [error] 7#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.75.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.75.131:32769", referrer: "http://192.168.75.131:32769/"
192.168.75.1 - - [08/Aug/2023:07:45:21 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://192.168.75.131:32769/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188" "-"
192.168.75.1 - - [08/Aug/2023:07:45:47 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188" "-"
192.168.75.1 - - [08/Aug/2023:07:45:48 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188" "-"

#前台启动的会话窗口无法进行其他操作,除非退出,但是退出后容器也会退出

#随机端口映射,其实是默认从 32768 开始

root@ubuntu-n1:~# lsof -i:32769
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 4175 root    4u  IPv6 201062      0t0  TCP *:32769 (LISTEN)

#网页访问本主机ip:32769即可

指定端口映射

-d 后端运行

方式 1:本地端口 8080映射到容器 80 端口:

docker run -d --name nginx-demo1 -p 8080:80 nginx:1.18.0

方式 2:本地 IP:本地端口:容器端口

docker run -d --name nginx-demo2 -p 192.168.75.131:8081:80 nginx:1.8.1

方式 3:本地 IP:本地随机端口:容器端口

docker run -d --name nginx-demo3 -p 192.168.75.131::80 nginx:1.8.1

方式 4:本机 ip:本地端口:容器端口/协议,默认为 tcp 协议

docker run -d --name nginx-demo4 -p 192.168.75.131:81:80/udp nginx:1.8.1

查看运行中的nginx日志

docker logs CONTAINER ID/NAME #一次查看

docker logs -f CONTAINER ID/NAME #持续查看

查看容器已经映射的端口

# docker port nginx-demo

80/tcp -> 0.0.0.0:8080

# docker port 72c1142f1884

80/udp -> 192.168.75.131:81

自定义启动容器的名称

–name

# docker run -itd --name httpd-test -p 9000:80 httpd
83edba1c6efb7b0076b3964fcb02b931c9f034061a8b9e391b77dc6334f0499f
root@ubuntu-n1:~# docker ps |grep httpd-test
83edba1c6efb   httpd          "httpd-foreground"        11 seconds ago   Up 9 seconds    0.0.0.0:9000->80/tcp                         httpd-test

创建并进入容器

root@ubuntu-n1:~# docker run -it --name httpd-test1 httpd /bin/bash
root@4340b84f517f:/usr/local/apache2# 
root@4340b84f517f:/usr/local/apache2# uname -r 
4.15.0-213-generic
root@4340b84f517f:/usr/local/apache2# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@4340b84f517f:/usr/local/apache2#

单次运行

–rm 容器退出后自动删除:docker run -it --rm --name httpd-test2 httpd /bin/bash

传递运行命令

容器需要有一个前台运行的进程才能保持容器的运行,通过传递运行参数是一种方式,另外也可以在构建镜像的时候指定容器启动时运行的前台命令。

docker run -d centos tail -f '/etc/hosts'

容器的启动和关闭

docker start id/name

docker stop id/name

进入容器

使用 attach命令

#使用方式为 docker attach 容器名,attach 类似于 vnc,操作会在各个容器界面显示,所有使用此方式进入容器的操作都是同步显示的且 exit 后容器将被关闭,且使用 exit 退出后容器关闭,不推荐使用,需要进入到有 shell 环境的容器,比如 centos 为例:

# docker run -it centos bash
[root@21a0d07f987a /]#

# docker attach 21a0d07f987a
[root@21a0d07f987a /]#


这里在任意一个终端打命令,这两个窗口命令是同步的。

使用 exec命令

docker exec -it nginx-demo bash

查看容器信息

docker inspect

.

# docker inspect nginx-demo -f "{{.NetworkSettings.IPAddress}}"
172.17.0.3

批量关闭正在运行的容器

docker stop $(docker ps -a -q)

批量强制关闭正在运行的容器

docker kill $(docker ps -a -q)

批量删除已退出容器

docker rm -f docker ps -aq -f status=exited

批量删除所有容器

docker rm -f $(docker ps -a -q)

指定容器 DNS

Dns 服务,默认采用宿主机的 dns 地址

一是将 dns 地址配置在宿主机

二是将参数配置在 docker 启动脚本里面 –-dns=1.1.1.1

root@ubuntu-n1:~# docker run -it --name test2 --dns 223.6.6.6 alpine
/ # cat /etc/resolv.conf 
nameserver 223.6.6.6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值