【Docker】容器管理

一、容器生命周期及启动过程

1、容器生命周期

 

2、容器启动过程

 

 

二、容器管理命令

Usage:    docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set
                           with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

 

1、启动容器

Usage:    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cidfile string                 Write the container ID to the file
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU shares (relative weight)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                         Run container in background and print container ID  #后台运行容器,默认容器前台运行
      --detach-keys string             Override the key sequence for detaching a container
      --device list                    Add a host device to the container
      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
      --disable-content-trust          Skip image verification (default true)
      --dns list                       Set custom DNS servers  #指定容器使用的dns地址
      --dns-option list                Set DNS options
      --dns-search list                Set custom DNS search domains  #指定容器加入的域名
      --domainname string              Container NIS domain name
      --entrypoint string              Overwrite the default ENTRYPOINT of the image  #容器启动执行entrypoint命令
  -e, --env list                       Set environment variables  #设置环境变量参数
      --env-file list                  Read in a file of environment variables  #从指定文件获取环境变量参数
      --expose list                    Expose a port or a range of ports
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                 Add additional groups to join
      --health-cmd string              Command to run to check health
      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int             Consecutive failures needed to report unhealthy
      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h)
                                       (default 0s)
      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                           Print usage
  -h, --hostname string                Container host name  #指定容器主机名
      --init                           Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                    Keep STDIN open even if not attached  #保存交互状态,通常与-d参数联用
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
  -l, --label list                     Set meta data on a container  #设置容器标签
      --label-file list                Read in a line delimited file of labels
      --link list                      Add link to another container
      --link-local-ip list             Container IPv4/IPv6 link-local addresses
      --log-driver string              Logging driver for the container
      --log-opt list                   Log driver options
      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                   Memory limit
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                    Attach a filesystem mount to the container
      --name string                    Assign a name to the container
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      --no-healthcheck                 Disable any container-specified HEALTHCHECK
      --oom-kill-disable               Disable OOM Killer
      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000)
      --pid string                     PID namespace to use
      --pids-limit int                 Tune container pids limit (set -1 for unlimited)
      --platform string                Set platform if server is multi-platform capable
      --privileged                     Give extended privileges to this container  #使用管理员身份启动容器
  -p, --publish list                   Publish a container's port(s) to the host  #手动指定宿主机端口映射到容器端口上
  -P, --publish-all                    Publish all exposed ports to random ports  #使用宿主机随机端口映射到容器声明暴露的全部端口
      --read-only                      Mount the container's root filesystem as read only  #只读方式启动容器
      --restart string                 Restart policy to apply when a container exits (default "no")  #指定容器重启方式 默认no
      --rm                             Automatically remove the container when it exits  #当容器退出时自动删除
      --runtime string                 Runtime to use for this container  #指定容器运行时模式
      --security-opt list              Security Options
      --shm-size bytes                 Size of /dev/shm
      --sig-proxy                      Proxy received signals to the process (default true)
      --stop-signal string             Signal to stop a container (default "SIGTERM")
      --stop-timeout int               Timeout (in seconds) to stop a container
      --storage-opt list               Storage driver options for the container
      --sysctl map                     Sysctl options (default map[])
      --tmpfs list                     Mount a tmpfs directory
  -t, --tty                            Allocate a pseudo-TTY  #分配给容器tty终端,通常联合-i 实现容器交互访问,容器必须支持shell
      --ulimit ulimit                  Ulimit options (default [])
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])  #指定容器内运行用户
      --userns string                  User namespace to use
      --uts string                     UTS namespace to use
  -v, --volume list                    Bind mount a volume  #映射数据目录,结合数据管理使用
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
  -w, --workdir string                 Working directory inside the container  #指定容器工作目录

--restart 四种模式

no  容器退出时不要自动重新启动。默认设置

on-failure[:max-retries]   仅当容器以非零退出状态退出时才重新启动。(可选)限制Docker守护进程尝试重新启动的重试次数

always  无论退出状态如何,始终重新启动容器。当您指定始终时,Docker守护进程将尝试无限期地重新启动容器。容器也将始终在后台进程启动时启动,而与容器的当前状态无关

unless-stopped  无论退出状态如何,都要重新启动容器,包括在守护程序启动时,除非容器在Docker守护程序停止之前处于停止状态。

注意:当容器启动后,如果容器内没有前台运行的进程,容器将自动退出并停止运行

使用 exit 将从容器内退出并停止容器

使用 ctrl+p+q,从容器内退出,不停止容器运行

 

1.1 使用 hello-world 镜像启动容器

[root@Docker-Ubu1804-p11:~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

 

1.2、使用一次性命令运行容器

[root@Docker-Ubu1804-p11:~]# docker run alpine echo hello
hello
[root@Docker-Ubu1804-p11:~]# 

 

1.3、指定运行容器名称

[root@Docker-Ubu1804-p11:~]# docker run --name alpine1 alpine
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
1dbebe78a341        alpine              "/bin/sh"           5 seconds ago       Exited (0) 4 seconds ago                       alpine1

 

1.4、运行交互时容器并退出

# 使用 exit 退出
[root@Docker-Ubu1804-p11:~]# docker run -it --name alpine2 alpine sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # exit
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
9be449b24e1c        alpine              "sh"                47 seconds ago       Exited (0) 28 seconds ago                           alpine2
1dbebe78a341        alpine              "/bin/sh"           About a minute ago   Exited (0) About a minute ago                       alpine1
#使用 Ctrl+p+q 退出
[root@Docker-Ubu1804-p11:~]# docker run -it --name alpine3 alpine sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # [root@Docker-Ubu1804-p11:
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
c5d572106164        alpine              "sh"                14 seconds ago       Up 12 seconds                                       alpine3
9be449b24e1c        alpine              "sh"                About a minute ago   Exited (0) About a minute ago                       alpine2
1dbebe78a341        alpine              "/bin/sh"           2 minutes ago        Exited (0) 2 minutes ago                            alpine1
[root@Docker-Ubu1804-p11:~]# 

 

1.5、设置容器内主机名称

[root@Docker-Ubu1804-p11:~]# docker run -it --name alpine3 -h alpine3 alpine
/ # hostname
alpine3
/ # 

 

1.6、运行一次性容器,退出后删除(通常用于测试)

[root@Docker-Ubu1804-p11:~]# docker run --rm -it alpine
/ # hostname
2da5181abd95
/ # exit
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                         PORTS               NAMES
534f8441a227        alpine              "/bin/sh"           About a minute ago   Up About a minute                                  alpine3
9be449b24e1c        alpine              "sh"                About an hour ago    Exited (0) About an hour ago                       alpine2
1dbebe78a341        alpine              "/bin/sh"           About an hour ago    Exited (0) About an hour ago                       alpine1

[root@Docker
-Ubu1804-p11:~]# docker run --rm alpine cat /etc/issue Welcome to Alpine Linux 3.15 Kernel \r on an \m (\l) [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 534f8441a227 alpine "/bin/sh" 3 minutes ago Up 3 minutes alpine3 9be449b24e1c alpine "sh" About an hour ago Exited (0) About an hour ago alpine2 1dbebe78a341 alpine "/bin/sh" About an hour ago Exited (0) About an hour ago alpine1

 

1.7、启用前台守护式容器

守护式容器

  • 能够长期运行
  • 无需会话式交互
  • 适合运行应用程序或服务
[root@Docker-Ubu1804-p11:~]# docker run nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/04/27 16:14:36 [notice] 1#1: using the "epoll" event method
2023/04/27 16:14:36 [notice] 1#1: nginx/1.21.5
2023/04/27 16:14:36 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2023/04/27 16:14:36 [notice] 1#1: OS: Linux 4.15.0-209-generic
2023/04/27 16:14:36 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023/04/27 16:14:36 [notice] 1#1: start worker processes
2023/04/27 16:14:36 [notice] 1#1: start worker process 30


 

1.8、启用后台守护式容器

[root@Docker-Ubu1804-p11:~]# docker run --name nginx1 -d nginx
ad85b3ce358ad832c491514f2f71fa3f9bf3c79ba7fffb257a61e7780d464d82
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
ad85b3ce358a        nginx               "/docker-entrypoint.…"   14 seconds ago      Up 13 seconds       80/tcp              nginx1

 

1.9、--restart 设置容器开机自启

##通常情况容器在宿主机发生重启后,容器不会自动重新启动
[root@Docker-Ubu1804-p11:~]# docker run --name nginx1 -d nginx 94512d6530943e6ab0934bc740e51ed5ce72cb07743eb1fe33855f8fc798fe93 [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 94512d653094 nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp nginx1 [root@Docker-Ubu1804-p11:~]# reboot Channel(Socket) closed from remote host(Docker-Ubuntu-1804-p11) at 00:22:18. Type `help' to learn how to use Xshell prompt. [C:\~]$ Last login: Fri Apr 28 00:22:40 2023 from 10.0.0.1 sudo su - janzen@Docker-Ubu1804-p11:~$ sudo su - [sudo] password for janzen: [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 94512d653094 nginx "/docker-entrypoint.…" 59 seconds ago Exited (0) 43 seconds ago nginx1

设置容器自动重启

[root@Docker-Ubu1804-p11:~]# docker run --restart=always --name nginx2 -d nginx
3563284776fd3f2940f3574076f1bc7fc728023a542536d74ff4578302be499e
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
3563284776fd        nginx               "/docker-entrypoint.…"   2 seconds ago       Up 1 second                80/tcp              nginx2
94512d653094        nginx               "/docker-entrypoint.…"   2 minutes ago       Exited (0) 2 minutes ago                       nginx1
[root@Docker-Ubu1804-p11:~]# docker start nginx1
nginx1
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3563284776fd        nginx               "/docker-entrypoint.…"   30 seconds ago      Up 29 seconds       80/tcp              nginx2
94512d653094        nginx               "/docker-entrypoint.…"   3 minutes ago       Up 2 seconds        80/tcp              nginx1
[root@Docker-Ubu1804-p11:~]# reboot
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(Docker-Ubuntu-1804-p11) at 00:25:34.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 
Last login: Fri Apr 28 00:25:54 2023 from 10.0.0.1
sudo su -
janzen@Docker-Ubu1804-p11:~$ sudo su -
[sudo] password for janzen: 
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS               NAMES
3563284776fd        nginx               "/docker-entrypoint.…"   2 minutes ago       Up About a minute               80/tcp              nginx2
94512d653094        nginx               "/docker-entrypoint.…"   4 minutes ago       Exited (0) About a minute ago                       nginx1

 

1.10、--privileged 使容器获得root权限

--privileged 可以让容器内的root账号真正拥有root权限,否则 容器内的root只是外部的一个普通用户权限,privileged 启动容器后,可以看到很多宿主机上的设备,并且可以执行mount命令,甚至允许在容器内启动容器

#常规权限启动容器,挂载光盘数据
[root@Docker-Ubu1804-p11:~]# docker run -it --rm centos:7 bash
[root@b176345c438e /]# ls   
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@b176345c438e /]# lsblk
lsblk: dm-0: failed to get device path
lsblk: dm-0: failed to get device path
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  945M  0 rom  
sda      8:0    0   10G  0 disk 
|-sda2   8:2    0    1G  0 part 
|-sda3   8:3    0    9G  0 part 
`-sda1   8:1         1M  0 part 
[root@b176345c438e /]# mount /dev/sr0 /mnt
mount: permission denied
[root@b176345c438e /]# 

##privileged 启动容器,挂载光盘数据
[root@Docker-Ubu1804-p11:~]# docker run -it --rm --privileged centos:7 bash
[root@4c0deff6df65 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@4c0deff6df65 /]# lsblk
lsblk: dm-0: failed to get device path
lsblk: dm-0: failed to get device path
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  945M  0 rom  
sda      8:0    0   10G  0 disk 
|-sda2   8:2    0    1G  0 part 
|-sda3   8:3    0    9G  0 part 
`-sda1   8:1         1M  0 part 
[root@4c0deff6df65 /]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@4c0deff6df65 /]# ls /mnt
EFI  README.diskdefines  boot  casper  dists  install  isolinux  md5sum.txt  pics  pool  preseed  ubuntu
[root@4c0deff6df65 /]# 

 

2、查看容器信息

2.1、查看当前存在的容器

Usage:    docker ps [OPTIONS]

List containers

Options:
  -a, --all             Show all containers (default shows just running)
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print containers using a Go template
  -n, --last int        Show n last created containers (includes all states) (default -1)
  -l, --latest          Show the latest created container (includes all states)
      --no-trunc        Don't truncate output
  -q, --quiet           Only display numeric IDs
  -s, --size            Display total file sizes

 

#查看运行中的容器
[root@Docker-Ubu1804-p11:~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d9388e3c2645        janzen/app1         "nginx"                  18 seconds ago      Up 17 seconds       80/tcp, 443/tcp     elegant_lehmann
64757c743e9e        nginx               "/docker-entrypoint.…"   41 seconds ago      Up 40 seconds       80/tcp              peaceful_chaplygin

#查看存在的所有容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                     PORTS               NAMES
7507c2d3cb19        janzen/nginx-centos7:1.20.1-v2.0   "nginx"                  25 seconds ago      Exited (0) 3 seconds ago                       blissful_booth
d9388e3c2645        janzen/app1                        "nginx"                  2 minutes ago       Up 2 minutes               80/tcp, 443/tcp     elegant_lehmann
64757c743e9e        nginx                              "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes               80/tcp              peaceful_chaplygin
1b794f218ced        centos:7                           "/bin/bash"              3 minutes ago       Exited (0) 2 minutes ago                       compassionate_brattain
0c22ecafcbd4        alpine                             "/bin/sh"                3 minutes ago       Exited (0) 3 minutes ago                       peaceful_dirac

#显示运行中的容器ID
[root@Docker-Ubu1804-p11:~]# docker ps -q
d9388e3c2645
64757c743e9e

#显示所有容器ID
[root@Docker-Ubu1804-p11:~]# docker ps -aq
7507c2d3cb19
d9388e3c2645
64757c743e9e
1b794f218ced
0c22ecafcbd4


#显示容器大小
[root@Docker-Ubu1804-p11:~]# docker ps -s -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                     PORTS               NAMES                    SIZE
7507c2d3cb19        janzen/nginx-centos7:1.20.1-v2.0   "nginx"                  3 minutes ago       Exited (0) 2 minutes ago                       blissful_booth           0B (virtual 562MB)
d9388e3c2645        janzen/app1                        "nginx"                  5 minutes ago       Up 5 minutes               80/tcp, 443/tcp     elegant_lehmann          2B (virtual 572MB)
64757c743e9e        nginx                              "/docker-entrypoint.…"   5 minutes ago       Up 5 minutes               80/tcp              peaceful_chaplygin       1.09kB (virtual 141MB)
1b794f218ced        centos:7                           "/bin/bash"              5 minutes ago       Exited (0) 5 minutes ago                       compassionate_brattain   0B (virtual 204MB)
0c22ecafcbd4        alpine                             "/bin/sh"                6 minutes ago       Exited (0) 6 minutes ago                       peaceful_dirac           0B (virtual 5.59MB)

#显示最新创建的容器
[root@Docker-Ubu1804-p11:~]# docker ps -l
CONTAINER ID        IMAGE                              COMMAND             CREATED             STATUS                     PORTS               NAMES
7507c2d3cb19        janzen/nginx-centos7:1.20.1-v2.0   "nginx"             3 minutes ago       Exited (0) 3 minutes ago                       blissful_booth

#查看指定状态容器
[root@Docker-Ubu1804-p11:~]# docker ps -f "status=exited"
CONTAINER ID        IMAGE                              COMMAND             CREATED             STATUS                     PORTS               NAMES
7507c2d3cb19        janzen/nginx-centos7:1.20.1-v2.0   "nginx"             5 minutes ago       Exited (0) 4 minutes ago                       blissful_booth
1b794f218ced        centos:7                           "/bin/bash"         7 minutes ago       Exited (0) 7 minutes ago                       compassionate_brattain
0c22ecafcbd4        alpine                             "/bin/sh"           7 minutes ago       Exited (0) 7 minutes ago                       peaceful_dirac

 

2.2、查看容器内进程

Usage:  docker top CONTAINER [ps OPTIONS]
[root@Docker-Ubu1804-p11:~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d9388e3c2645        janzen/app1         "nginx"                  9 minutes ago       Up 9 minutes        80/tcp, 443/tcp     elegant_lehmann
64757c743e9e        nginx               "/docker-entrypoint.…"   10 minutes ago      Up 10 minutes       80/tcp              peaceful_chaplygin
[root@Docker-Ubu1804-p11:~]# docker top d9388e3c2645
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2994                2969                0                   00:45               ?                   00:00:00            nginx: master process nginx
999                 3029                2994                0                   00:45               ?                   00:00:00            nginx: worker process

 

2.3、查看容器资源使用情况

Usage:    docker stats [OPTIONS] [CONTAINER...]

Display a live stream of container(s) resource usage statistics

Options:
  -a, --all             Show all containers (default shows just running)
      --format string   Pretty-print images using a Go template
      --no-stream       Disable streaming stats and only pull the first result
      --no-trunc        Do not truncate output
#查看指定容器资源使用情况
[root@Docker-Ubu1804-p11:~]# docker stats app1

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
95fef1f3eba4        app1                0.00%               2.391MiB / 959.6MiB   0.25%               976B / 0B           0B / 0B             2


#查看所有容器资源使用情况
[root@Docker-Ubu1804-p11:~]# docker stats

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
9542bfcd7012        nginx1              0.00%               2.387MiB / 959.6MiB   0.25%               796B / 0B           0B / 8.19kB         2
95fef1f3eba4        app1                0.00%               2.391MiB / 959.6MiB   0.25%               976B / 0B           0B / 0B             2

 

2.4、查看容器详细信息

Usage:    docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:
  -f, --format string   Format the output using the given Go template
  -s, --size            Display total file sizes if the type is container
      --type string     Return JSON for specified type
[root@Docker-Ubu1804-p11:~]# docker inspect app1
[
    {
        "Id": "95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806",
        "Created": "2023-04-27T16:58:37.381048713Z",
        "Path": "nginx",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3684,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-04-27T16:58:37.787117281Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:4919aacb5ea0aa5d93a5f386f0df115c74cf774ff2df2bd68caf12b66fee3fe7",
        "ResolvConfPath": "/var/lib/docker/containers/95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806/hostname",
        "HostsPath": "/var/lib/docker/containers/95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806/hosts",
        "LogPath": "/var/lib/docker/containers/95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806/95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806-json.log",
        "Name": "/app1",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Capabilities": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/a65f25e477e872b0fd02f56f82ace0898c8f874547cf2d5a88798e74582e2458-init/diff:/var/lib/docker/overlay2/f8d7a1d5eb0d8502ae92b147370ca2f98a04f499ca8d15b9d64e93f77ddf4f60/diff:/var/lib/docker/overlay2/5d97937e774ff42c6d67fbce8ce268f5d8b517e435a077996a7d7e7807ac0a81/diff",
                "MergedDir": "/var/lib/docker/overlay2/a65f25e477e872b0fd02f56f82ace0898c8f874547cf2d5a88798e74582e2458/merged",
                "UpperDir": "/var/lib/docker/overlay2/a65f25e477e872b0fd02f56f82ace0898c8f874547cf2d5a88798e74582e2458/diff",
                "WorkDir": "/var/lib/docker/overlay2/a65f25e477e872b0fd02f56f82ace0898c8f874547cf2d5a88798e74582e2458/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "95fef1f3eba4",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "443/tcp": {},
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": null,
            "Image": "janzen/nginx-centos7:1.20.1-v2.0",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "nginx"
            ],
            "OnBuild": null,
            "Labels": {
                "author": "janzen<janzen.com>",
                "description": "Installed nginx-1.20.1-10.el7 by yum",
                "org.label-schema.build-date": "20201113",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS",
                "org.opencontainers.image.created": "2020-11-13 00:00:00+00:00",
                "org.opencontainers.image.licenses": "GPL-2.0-only",
                "org.opencontainers.image.title": "CentOS Base Image",
                "org.opencontainers.image.vendor": "CentOS",
                "version": "v2.0"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "c4b9c62a0bc926e276f35cb2a5ac43512029ffad2d17f6356c9475c990fa3399",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "443/tcp": null,
                "80/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/c4b9c62a0bc9",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "5590d59c01bbd1a63f628e2379ec2b1659014d2cfc6c2acee0c6088ce69e8b86",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "dd4e4f652edf182ce7f44dfa5caaeb56eeeb22db05a9b3c705cc8ec8cbc82ecd",
                    "EndpointID": "5590d59c01bbd1a63f628e2379ec2b1659014d2cfc6c2acee0c6088ce69e8b86",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
#过滤模式查看容器详细信息
[root@Docker-Ubu1804-p11:~]# docker inspect app1 --format="{{.State}}"
{running true false false false false 3684 0  2023-04-27T16:58:37.787117281Z 0001-01-01T00:00:00Z <nil>}
[root@Docker-Ubu1804-p11:~]# docker inspect app1 -f "{{.State}}"
{running true false false false false 3684 0  2023-04-27T16:58:37.787117281Z 0001-01-01T00:00:00Z <nil>}

 

3、删除容器

Usage:    docker rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers

Options:
  -f, --force     Force the removal of a running container (uses SIGKILL)
  -l, --link      Remove the specified link
  -v, --volumes   Remove anonymous volumes associated with the container
#删除指定容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                      PORTS               NAMES
f9c556915c06        centos:7                           "/bin/bash"              13 seconds ago      Exited (0) 13 seconds ago                       blissful_liskov
0b872ce6a3fe        centos:7                           "/bin/bash"              46 seconds ago      Exited (0) 45 seconds ago                       gifted_mestorf
6ed14d8829a3        alpine                             "/bin/sh"                52 seconds ago      Exited (0) 52 seconds ago                       busy_panini
9542bfcd7012        nginx                              "/docker-entrypoint.…"   14 minutes ago      Up 14 minutes               80/tcp              nginx1
95fef1f3eba4        janzen/nginx-centos7:1.20.1-v2.0   "nginx"                  14 minutes ago      Up 14 minutes               80/tcp, 443/tcp     app1
[root@Docker-Ubu1804-p11:~]# docker rm 0b872ce6a3fe
0b872ce6a3fe

#删除带有匿名卷的容器,并删除匿名卷
[root@Docker-Ubu1804-p11:~]# docker inspect f9c556915c06 -f "{{.Mounts}}"
[{volume 09e5f582ae1afcc4e61399af1ce931113213cd65de391c630f1737f2c250ead7 /var/lib/docker/volumes/09e5f582ae1afcc4e61399af1ce931113213cd65de391c630f1737f2c250ead7/_data /usr/lib/data local  true }]
[root@Docker-Ubu1804-p11:~]# ll /var/lib/docker/volumes/09e5f582ae1afcc4e61399af1ce931113213cd65de391c630f1737f2c250ead7/_data
total 8
drwxr-xr-x 2 root root 4096 Apr 28 01:12 ./
drwx-----x 3 root root 4096 Apr 28 01:12 ../
[root@Docker-Ubu1804-p11:~]# docker rm -v f9c556915c06
f9c556915c06
[root@Docker-Ubu1804-p11:~]# ll /var/lib/docker/volumes/09e5f582ae1afcc4e61399af1ce931113213cd65de391c630f1737f2c250ead7/_data
ls: cannot access '/var/lib/docker/volumes/09e5f582ae1afcc4e61399af1ce931113213cd65de391c630f1737f2c250ead7/_data': No such file or directory


#删除运行中的容器
[root@Docker-Ubu1804-p11:~]# docker ps
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS               NAMES
9542bfcd7012        nginx                              "/docker-entrypoint.…"   18 minutes ago      Up 18 minutes       80/tcp              nginx1
95fef1f3eba4        janzen/nginx-centos7:1.20.1-v2.0   "nginx"                  18 minutes ago      Up 18 minutes       80/tcp, 443/tcp     app1
[root@Docker-Ubu1804-p11:~]# docker rm app1
Error response from daemon: You cannot remove a running container 95fef1f3eba444ea8df446f4cd2ea09f01bc53874e0633e75f60bf9f24638806. Stop the container before attempting removal or force remove
[root@Docker-Ubu1804-p11:~]# docker rm -f app1
app1
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
6ed14d8829a3        alpine              "/bin/sh"                5 minutes ago       Exited (0) 5 minutes ago                       busy_panini
9542bfcd7012        nginx               "/docker-entrypoint.…"   18 minutes ago      Up 18 minutes              80/tcp              nginx1

#删除指定状态的容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
88c0c8c0b3e8        alpine              "/bin/sh"                40 seconds ago      Exited (0) 40 seconds ago                       eager_booth
8dc0d20e17e0        alpine              "/bin/sh"                42 seconds ago      Exited (0) 41 seconds ago                       elastic_kowalevski
dca29e7d8df3        alpine              "/bin/sh"                43 seconds ago      Exited (0) 42 seconds ago                       reverent_merkle
6ed14d8829a3        alpine              "/bin/sh"                14 minutes ago      Exited (0) 13 minutes ago                       busy_panini
9542bfcd7012        nginx               "/docker-entrypoint.…"   27 minutes ago      Up 27 minutes               80/tcp              nginx1
[root@Docker-Ubu1804-p11:~]# docker ps -qf "status=exited" | xargs docker rm -fv
88c0c8c0b3e8
8dc0d20e17e0
dca29e7d8df3
6ed14d8829a3
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
9542bfcd7012        nginx               "/docker-entrypoint.…"   28 minutes ago      Up 28 minutes       80/tcp              nginx1
 

#删除所有容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
5312f5a51957        nginx               "/docker-entrypoint.…"   4 seconds ago       Up 3 seconds                80/tcp              modest_keldysh
fc0387eaa16e        nginx               "/docker-entrypoint.…"   9 seconds ago       Up 9 seconds                80/tcp              ecstatic_shaw
bf954b53df83        alpine              "/bin/sh"                16 seconds ago      Exited (0) 16 seconds ago                       wonderful_wescoff
b5bd48ac6ccd        alpine              "/bin/sh"                18 seconds ago      Exited (0) 17 seconds ago                       elated_wu
9542bfcd7012        nginx               "/docker-entrypoint.…"   29 minutes ago      Up 29 minutes               80/tcp              nginx1
[root@Docker-Ubu1804-p11:~]# docker ps -aq | xargs docker rm -fv
5312f5a51957
fc0387eaa16e
bf954b53df83
b5bd48ac6ccd
9542bfcd7012
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
057791fe74cd        janzen/app1:v3.0    "nginx"                  9 seconds ago       Up 9 seconds                80/tcp, 443/tcp     nervous_kirch
ccb6665a6f69        janzen/app1:v3.0    "nginx"                  26 seconds ago      Exited (0) 13 seconds ago                       sweet_nightingale
862326646c78        alpine              "/bin/sh"                43 seconds ago      Exited (0) 42 seconds ago                       vigorous_kepler
c86366f583f6        nginx               "/docker-entrypoint.…"   53 seconds ago      Up 52 seconds               80/tcp              eager_dirac
[root@Docker-Ubu1804-p11:~]# docker rm -fv `docker ps -aq`
057791fe74cd
ccb6665a6f69
862326646c78
c86366f583f6
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

 

4、容器启动和停止

docker statr|stop|restart|pause|unpause 容器ID
#停止,启动,重启 容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
79122ed71c8b        nginx               "/docker-entrypoint.…"   9 seconds ago       Up 8 seconds        80/tcp              nginx1
95ef5312654d        janzen/app1:v3.0    "nginx"                  19 seconds ago      Up 18 seconds       80/tcp, 443/tcp     app1
[root@Docker-Ubu1804-p11:~]# docker stop app1
app1
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
79122ed71c8b        nginx               "/docker-entrypoint.…"   18 seconds ago      Up 17 seconds             80/tcp              nginx1
95ef5312654d        janzen/app1:v3.0    "nginx"                  28 seconds ago      Exited (0) 1 second ago                       app1

[root@Docker-Ubu1804-p11:~]# docker start app1
app1
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
79122ed71c8b        nginx               "/docker-entrypoint.…"   35 seconds ago      Up 33 seconds       80/tcp              nginx1
95ef5312654d        janzen/app1:v3.0    "nginx"                  45 seconds ago      Up 2 seconds        80/tcp, 443/tcp     app1
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
79122ed71c8b        nginx               "/docker-entrypoint.…"   42 seconds ago      Up 40 seconds       80/tcp              nginx1
95ef5312654d        janzen/app1:v3.0    "nginx"                  52 seconds ago      Up 9 seconds        80/tcp, 443/tcp     app1

[root@Docker-Ubu1804-p11:~]# docker restart app1
app1
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
79122ed71c8b        nginx               "/docker-entrypoint.…"   58 seconds ago       Up 57 seconds       80/tcp              nginx1
95ef5312654d        janzen/app1:v3.0    "nginx"                  About a minute ago   Up 1 second         80/tcp, 443/tcp     app1


#启动并进入容器
[root@Docker-Ubu1804-p11:~]# docker run -it --name centos centos:7 bash
[root@db7c68fceee3 /]# exit
exit
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
db7c68fceee3        centos:7            "bash"                   7 seconds ago       Exited (0) 5 seconds ago                       centos
79122ed71c8b        nginx               "/docker-entrypoint.…"   6 minutes ago       Up 6 minutes               80/tcp              nginx1
95ef5312654d        janzen/app1:v3.0    "nginx"                  7 minutes ago       Exited (0) 4 minutes ago                       app1
[root@Docker-Ubu1804-p11:~]# docker start -i centos 
[root@db7c68fceee3 /]# exit
exit


#停止所有容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
ca0eadefe3e8        nginx               "/docker-entrypoint.…"   6 seconds ago       Up 5 seconds                80/tcp              nginx2
828dfe7a4d59        nginx               "/docker-entrypoint.…"   16 seconds ago      Exited (0) 14 seconds ago                       nginx1
7030861c96fd        nginx               "/docker-entrypoint.…"   23 seconds ago      Exited (0) 20 seconds ago                       nginx
[root@Docker-Ubu1804-p11:~]# docker start `docker ps -a`
Error response from daemon: No such container: CONTAINER
Error response from daemon: No such container: ID
Error response from daemon: No such container: IMAGE
Error response from daemon: No such container: COMMAND
Error response from daemon: No such container: CREATED
Error response from daemon: No such container: STATUS
Error response from daemon: No such container: PORTS
Error response from daemon: No such container: NAMES
ca0eadefe3e8
nginx
Error response from daemon: No such container: "/docker-entrypoint.…"
Error response from daemon: No such container: 32
Error response from daemon: No such container: seconds
Error response from daemon: No such container: ago
Error response from daemon: No such container: Up
Error response from daemon: No such container: 31
Error response from daemon: No such container: seconds
Error response from daemon: No such container: 80/tcp
nginx2
828dfe7a4d59
nginx
Error response from daemon: No such container: "/docker-entrypoint.…"
Error response from daemon: No such container: 42
Error response from daemon: No such container: seconds
Error response from daemon: No such container: ago
Error response from daemon: No such container: Exited
Error response from daemon: No such container: (0)
Error response from daemon: No such container: 40
Error response from daemon: No such container: seconds
Error response from daemon: No such container: ago
nginx1
7030861c96fd
nginx
Error response from daemon: No such container: "/docker-entrypoint.…"
Error response from daemon: No such container: 49
Error response from daemon: No such container: seconds
Error response from daemon: No such container: ago
Error response from daemon: No such container: Exited
Error response from daemon: No such container: (0)
Error response from daemon: No such container: 46
Error response from daemon: No such container: seconds
Error response from daemon: No such container: ago
nginx
Error: failed to start containers: CONTAINER, ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES, "/docker-entrypoint.…", 32, seconds, ago, Up, 31, seconds, 80/tcp, "/docker-entrypoint.…", 42, seconds, ago, Exited, (0), 40, seconds, ago, "/docker-entrypoint.…", 49, seconds, ago, Exited, (0), 46, seconds, ago
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
ca0eadefe3e8        nginx               "/docker-entrypoint.…"   37 seconds ago      Up 37 seconds       80/tcp              nginx2
828dfe7a4d59        nginx               "/docker-entrypoint.…"   47 seconds ago      Up 4 seconds        80/tcp              nginx1
7030861c96fd        nginx               "/docker-entrypoint.…"   54 seconds ago      Up 5 seconds        80/tcp              nginx

#启动所有容器 [root@Docker
-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca0eadefe3e8 nginx "/docker-entrypoint.…" 37 seconds ago Up 37 seconds 80/tcp nginx2 828dfe7a4d59 nginx "/docker-entrypoint.…" 47 seconds ago Up 4 seconds 80/tcp nginx1 7030861c96fd nginx "/docker-entrypoint.…" 54 seconds ago Up 5 seconds 80/tcp nginx [root@Docker-Ubu1804-p11:~]# docker ps -aq |xargs docker stop ca0eadefe3e8 828dfe7a4d59 7030861c96fd [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca0eadefe3e8 nginx "/docker-entrypoint.…" About a minute ago Exited (0) 2 seconds ago nginx2 828dfe7a4d59 nginx "/docker-entrypoint.…" About a minute ago Exited (0) 2 seconds ago nginx1 7030861c96fd nginx "/docker-entrypoint.…" About a minute ago Exited (0) 2 seconds ago nginx #容器暂停 [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd2deeaf88ee nginx "/docker-entrypoint.…" 7 seconds ago Up 6 seconds 80/tcp nginx [root@Docker-Ubu1804-p11:~]# docker top nginx UID PID PPID C STIME TTY TIME CMD root 9512 9487 0 01:52 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 9568 9512 0 01:52 ? 00:00:00 nginx: worker process [root@Docker-Ubu1804-p11:~]# ps -aux | grep nginx root 9512 0.0 0.5 8852 5384 ? Ss 01:52 0:00 nginx: master process nginx -g daemon off; systemd+ 9568 0.0 0.2 9272 2420 ? S 01:52 0:00 nginx: worker process root 9601 0.0 0.1 13216 1112 pts/0 S+ 01:52 0:00 grep --color=auto nginx [root@Docker-Ubu1804-p11:~]# docker pause nginx nginx [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd2deeaf88ee nginx "/docker-entrypoint.…" About a minute ago Up About a minute (Paused) 80/tcp nginx [root@Docker-Ubu1804-p11:~]# docker top nginx UID PID PPID C STIME TTY TIME CMD root 9512 9487 0 01:52 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 9568 9512 0 01:52 ? 00:00:00 nginx: worker process [root@Docker-Ubu1804-p11:~]# ps -aux | grep nginx root 9512 0.0 0.5 8852 5384 ? Ds 01:52 0:00 nginx: master process nginx -g daemon off; systemd+ 9568 0.0 0.2 9272 2420 ? D 01:52 0:00 nginx: worker process root 9649 0.0 0.1 13216 1096 pts/0 S+ 01:53 0:00 grep --color=auto nginx #容器取消暂停 [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd2deeaf88ee nginx "/docker-entrypoint.…" About a minute ago Up About a minute (Paused) 80/tcp nginx [root@Docker-Ubu1804-p11:~]# docker top nginx UID PID PPID C STIME TTY TIME CMD root 9512 9487 0 01:52 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 9568 9512 0 01:52 ? 00:00:00 nginx: worker process [root@Docker-Ubu1804-p11:~]# ps -aux | grep nginx root 9512 0.0 0.5 8852 5384 ? Ds 01:52 0:00 nginx: master process nginx -g daemon off; systemd+ 9568 0.0 0.2 9272 2420 ? D 01:52 0:00 nginx: worker process root 9649 0.0 0.1 13216 1096 pts/0 S+ 01:53 0:00 grep --color=auto nginx [root@Docker-Ubu1804-p11:~]# docker unpause nginx nginx [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd2deeaf88ee nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp nginx [root@Docker-Ubu1804-p11:~]# docker top nginx UID PID PPID C STIME TTY TIME CMD root 9512 9487 0 01:52 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 9568 9512 0 01:52 ? 00:00:00 nginx: worker process [root@Docker-Ubu1804-p11:~]# ps -aux | grep nginx root 9512 0.0 0.5 8852 5384 ? Ss 01:52 0:00 nginx: master process nginx -g daemon off; systemd+ 9568 0.0 0.2 9272 2420 ? S 01:52 0:00 nginx: worker process root 9711 0.0 0.1 13216 1040 pts/0 S+ 01:55 0:00 grep --color=auto nginx

 

5、给运行中的容器发送信号

Usage:    docker kill [OPTIONS] CONTAINER [CONTAINER...]

Kill one or more running containers

Options:
  -s, --signal string   Signal to send to the container (default "KILL")
#当容器出现无法响应,也无法通过stop指令控制时,可使用 docker kill 强行关闭容器
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
bd2deeaf88ee        nginx               "/docker-entrypoint.…"   10 minutes ago      Up 10 minutes       80/tcp              nginx
[root@Docker-Ubu1804-p11:~]# docker kill nginx 
nginx
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
bd2deeaf88ee        nginx               "/docker-entrypoint.…"   10 minutes ago      Exited (137) 1 second ago                       nginx
 

 

6、进入运行中的容器

6.1、使用attach命令

类似于VNC模式进入容器,所有操作会同步输出到所有attach的连接窗口中,且exit退出后,容器自动关闭(不推荐)

Usage:    docker attach [OPTIONS] CONTAINER

Attach local standard input, output, and error streams to a running container

Options:
      --detach-keys string   Override the key sequence for detaching a container
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED    
0a36288058f6        centos:7            "/bin/bash"         27 seconds 
[root@Docker-Ubu1804-p11:~]# docker attach centos 
[root@0a36288058f6 /]# 
[root@0a36288058f6 /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@0a36288058f6 /]# exit
exit
[root@Docker-Ubu1804-p11:~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                     PORTS               NAMES
0a36288058f6        centos:7            "/bin/bash"         About a minute ago   Exited (0) 6 seconds ago                       centos
[root@Docker-Ubu1804-p11:~]# 

 

6.2、使用exec命令

docker exec 可以对容器执行单次命令 或者 进入容器,且 exit 退出后,不影响容器继续运行(推荐)

Usage:    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container
#使用单命令模式向容器发送命令
[root@Docker-Ubu1804-p11:~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0a36288058f6        centos:7            "/bin/bash"         6 minutes ago       Up 2 minutes                            centos
[root@Docker-Ubu1804-p11:~]# docker exec centos echo "centos test"
centos test
[root@Docker-Ubu1804-p11:~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0a36288058f6        centos:7            "/bin/bash"         7 minutes ago       Up 2 minutes                            centos

#进入容器,并使用exit退出
[root@Docker-Ubu1804-p11:~]# docker exec -it centos bash
[root@0a36288058f6 /]# cat /etc/issue
\S
Kernel \r on an \m

[root@0a36288058f6 /]# exit
exit
[root@Docker-Ubu1804-p11:~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0a36288058f6        centos:7            "/bin/bash"         7 minutes ago       Up 3 minutes                            centos
[root@Docker-Ubu1804-p11:~]# 

 

7、暴露容器所有端口

#docker run -P IMAGE
Usage: docker port CONTAINER [PRIVATE_PORT[/PROTO]]
[root@Docker-Ubu1804-p11:~]# docker port nginx
80/tcp -> 0.0.0.0:32770
[root@Docker-Ubu1804-p11:~]# docker port app1
443/tcp -> 0.0.0.0:32768
80/tcp -> 0.0.0.0:32769
[root@Docker-Ubu1804-p11:~]# 

 

8、指定端口映射

#容器80端口映射到宿主机随机端口
docker run -p 80 <image>

#容器80端口映射到宿主机81端口 docker run -p 81:80 <image>

#容器80端口映射到宿主机 10.0.0.11:80 docker run -p 10.0.0.11:81:80 <image>

#容器80端口映射到宿主机10.0.0.11随机端口 docker run -p 10.0.0.11::80 <image>

#容器53/udp 端口映射到宿主机 10.0.0.11:53/udp 端口 docker run -p 10.0.0.11:53:53/udp <image>

#多端口映射 docker run -p 80 -p 443:443 -p 10.0.0.11:53:53/udp <image>

修改指定端口映射内容

容器端口映射配置文件路径 /var/lib/docker/containers/<容器ID>/hostconfig.json

#停用docker服务,找到配置文件 HostPort 内容,修改为新的宿主机端口
[root@Docker-Ubu1804-p11:~]# docker run -itd -p 80:80 --name app1 janzen/app1:v3.0 6d72cee22c43c320ce76dc2e3f186175d9237c7e888a969a37c3a04658e0bdc8 [root@Docker-Ubu1804-p11:~]# docker port app1 80/tcp -> 0.0.0.0:80 [root@Docker-Ubu1804-p11:~]# vim /var/lib/docker/containers/6d72cee22c43c320ce76dc2e3f186175d9237c7e888a969a37c3a04658e0bdc8/hostconfig.json [root@Docker-Ubu1804-p11:~]# cat /var/lib/docker/containers/6d72cee22c43c320ce76dc2e3f186175d9237c7e888a969a37c3a04658e0bdc8/hostconfig.json | grep HostPort {"Binds":null,"ContainerIDFile":"","LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"default","PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"80"}]},"RestartPolicy":{"Name":"no","MaximumRetryCount":0},"AutoRemove":false,"VolumeDriver":"","VolumesFrom":null,"CapAdd":null,"CapDrop":null,"Capabilities":null,"Dns":[],"DnsOptions":[],"DnsSearch":[],"ExtraHosts":null,"GroupAdd":null,"IpcMode":"private","Cgroup":"","Links":null,"OomScoreAdj":0,"PidMode":"","Privileged":false,"PublishAllPorts":false,"ReadonlyRootfs":false,"SecurityOpt":null,"UTSMode":"","UsernsMode":"","ShmSize":67108864,"Runtime":"runc","ConsoleSize":[0,0],"Isolation":"","CpuShares":0,"Memory":0,"NanoCpus":0,"CgroupParent":"","BlkioWeight":0,"BlkioWeightDevice":[],"BlkioDeviceReadBps":null,"BlkioDeviceWriteBps":null,"BlkioDeviceReadIOps":null,"BlkioDeviceWriteIOps":null,"CpuPeriod":0,"CpuQuota":0,"CpuRealtimePeriod":0,"CpuRealtimeRuntime":0,"CpusetCpus":"","CpusetMems":"","Devices":[],"DeviceCgroupRules":null,"DeviceRequests":null,"KernelMemory":0,"KernelMemoryTCP":0,"MemoryReservation":0,"MemorySwap":0,"MemorySwappiness":null,"OomKillDisable":false,"PidsLimit":null,"Ulimits":null,"CpuCount":0,"CpuPercent":0,"IOMaximumIOps":0,"IOMaximumBandwidth":0,"MaskedPaths":["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths":["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]}

 

9、查看容器日志

docker logs 查看到的日志内容,必须为容器内前台输出的内容

Usage:    docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
#查看容器日志
[root@Docker-Ubu1804-p11:~]# docker logs nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/04/27 18:47:48 [notice] 1#1: using the "epoll" event method
2023/04/27 18:47:48 [notice] 1#1: nginx/1.21.5
2023/04/27 18:47:48 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2023/04/27 18:47:48 [notice] 1#1: OS: Linux 4.15.0-209-generic
2023/04/27 18:47:48 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023/04/27 18:47:48 [notice] 1#1: start worker processes
2023/04/27 18:47:48 [notice] 1#1: start worker process 30


#显示时间
[root@Docker-Ubu1804-p11:~]# docker logs nginx -t
2023-04-27T18:47:48.893411908Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2023-04-27T18:47:48.896711013Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2023-04-27T18:47:48.897924136Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2023-04-27T18:47:48.921415444Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2023-04-27T18:47:48.931443450Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
2023-04-27T18:47:48.931809013Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
2023-04-27T18:47:48.935078168Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2023-04-27T18:47:48.936533187Z /docker-entrypoint.sh: Configuration complete; ready for start up
2023-04-27T18:47:48.945388543Z 2023/04/27 18:47:48 [notice] 1#1: using the "epoll" event method
2023-04-27T18:47:48.945542266Z 2023/04/27 18:47:48 [notice] 1#1: nginx/1.21.5
2023-04-27T18:47:48.945665277Z 2023/04/27 18:47:48 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2023-04-27T18:47:48.945784449Z 2023/04/27 18:47:48 [notice] 1#1: OS: Linux 4.15.0-209-generic
2023-04-27T18:47:48.945903853Z 2023/04/27 18:47:48 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023-04-27T18:47:48.946243713Z 2023/04/27 18:47:48 [notice] 1#1: start worker processes
2023-04-27T18:47:48.946481894Z 2023/04/27 18:47:48 [notice] 1#1: start worker process 30


#跟踪显示
[root@Docker-Ubu1804-p11:~]# docker logs nginx -t -f
2023-04-27T18:47:48.893411908Z /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
2023-04-27T18:47:48.896711013Z /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
2023-04-27T18:47:48.897924136Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
2023-04-27T18:47:48.921415444Z 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
2023-04-27T18:47:48.931443450Z 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
2023-04-27T18:47:48.931809013Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
2023-04-27T18:47:48.935078168Z /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
2023-04-27T18:47:48.936533187Z /docker-entrypoint.sh: Configuration complete; ready for start up
2023-04-27T18:47:48.945388543Z 2023/04/27 18:47:48 [notice] 1#1: using the "epoll" event method
2023-04-27T18:47:48.945542266Z 2023/04/27 18:47:48 [notice] 1#1: nginx/1.21.5
2023-04-27T18:47:48.945665277Z 2023/04/27 18:47:48 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
2023-04-27T18:47:48.945784449Z 2023/04/27 18:47:48 [notice] 1#1: OS: Linux 4.15.0-209-generic
2023-04-27T18:47:48.945903853Z 2023/04/27 18:47:48 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023-04-27T18:47:48.946243713Z 2023/04/27 18:47:48 [notice] 1#1: start worker processes
2023-04-27T18:47:48.946481894Z 2023/04/27 18:47:48 [notice] 1#1: start worker process 30

2023-04-27T18:50:18.049511284Z 10.0.0.7 - - [27/Apr/2023:18:50:18 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"


#显示最新 5
[root@Docker-Ubu1804-p11:~]# docker logs nginx -t --tail 5
2023-04-27T18:50:48.979223543Z 10.0.0.7 - - [27/Apr/2023:18:50:48 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
2023-04-27T18:50:49.549149287Z 10.0.0.7 - - [27/Apr/2023:18:50:49 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
2023-04-27T18:50:50.140282142Z 10.0.0.7 - - [27/Apr/2023:18:50:50 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
2023-04-27T18:50:50.730516959Z 10.0.0.7 - - [27/Apr/2023:18:50:50 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
2023-04-27T18:50:59.198938861Z 10.0.0.11 - - [27/Apr/2023:18:50:59 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.58.0" "-"

 

10、传递运行命令

[root@Docker-Ubu1804-p11:~]# docker run -d --name centos centos:7 tail -f /etc/passwd
aa4d029b8c7e12cf73b273af093f434612f0deb22f41c256770e73c3b28a9ff7
[root@Docker-Ubu1804-p11:~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
aa4d029b8c7e        centos:7            "tail -f /etc/passwd"    6 seconds ago       Up 5 seconds                             centos
0a6bd66584ef        nginx               "/docker-entrypoint.…"   6 minutes ago       Up 6 minutes        0.0.0.0:80->80/tcp   nginx
[root@Docker-Ubu1804-p11:~]# 

 

11、容器内部hosts文件

[root@aa4d029b8c7e /]# cat /etc/hosts
127.0.0.1    localhost
::1    localhost ip6-localhost ip6-loopback
fe00::0    ip6-localnet
ff00::0    ip6-mcastprefix
ff02::1    ip6-allnodes
ff02::2    ip6-allrouters
172.17.0.3    aa4d029b8c7e
[root@aa4d029b8c7e /]# 

 

12、指定容器DNS

容器指定DNS方式:

1、在宿主机配置DNS

2、启动容器时使用 --dns=x.x.x.x 参数指定DNS

3、在 /etc/docker/daemon.json 添加 {"dns":["x.x.x.x","x.x.x.x"]}

13、容器内与宿主机之间复制文件

Usage:    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH
#将文件从容器复制到宿主机
[root@Docker-Ubu1804-p11:~]# docker cp -a aa4d029b8c7e:/etc/yum.repos.d/CentOS-Base.repo ~/ [root@Docker-Ubu1804-p11:~]# ls CentOS-Base.repo disk.sh issue janzen_web_images.tar redis_install.sh busybox_image.tar image.tar janzen_images.tar os.version system_info.sh #将文件从宿主机复制到容器内 [root@Docker-Ubu1804-p11:~]# docker cp redis_install.sh aa4d029b8c7e:/var [root@Docker-Ubu1804-p11:~]# docker exec centos ls /var adm cache db empty games gopher kerberos lib local lock log mail nis opt preserve redis_install.sh run spool tmp yp

 

14、systemd控制容器运行

[root@Docker-Ubu1804-p11:~]# vim /lib/systemd/system/app1_docker.service

[Unit]                                                                                                                                          
Description=Run app1 on Docker Application Container Engine
Documentation=http://${hostname -i}
After=network-online.target firewalld.service containerd.service docker.service
Wants=network-online.target
Requires=docker.socket

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill app1
ExecStartPre=-/usr/bin/docker rm -fv app1
ExecStart=/usr/bin/docker run --name app1 -p 80:80 janzen/app1
ExecStop=/usr/bin/docker stop app1
ExecStopPost="/usr/bin/docker rm app1"

[Install]
WantedBy=multi-user.target
[root@Docker-Ubu1804-p11:~]# 
[root@Docker-Ubu1804-p11:~]# systemctl daemon-reload 
[root@Docker-Ubu1804-p11:~]# systemctl enable --now app1_docker.service 
Created symlink /etc/systemd/system/multi-user.target.wants/app1_docker.service → /lib/systemd/system/app1_docker.service.

 

 

15、传递环境变量

 mysql 镜像参数参考:https://hub.docker.com/_/mysql

#mysql传递root密码参数
[root@Docker-Ubu1804-p11:~]# docker run --name mysql -e MYSQL_ROOT_PASSWORD=passwd -d mysql Unable to find image 'mysql:latest' locally latest: Pulling from library/mysql Digest: sha256:a43f6e7e7f3a5e5b90f857fbed4e3103ece771b19f0f75880f767cf66bbb6577 Status: Downloaded newer image for mysql:latest 1ab9b49af363ab9a5fa87ed7127cb7eeae15ea1135e350f141d386ebbf4198e9 [root@Docker-Ubu1804-p11:~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ab9b49af363 mysql "docker-entrypoint.s…" 14 seconds ago Up 13 seconds 3306/tcp, 33060/tcp mysql fb706a7ec6a3 janzen/app1 "nginx" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 443/tcp app1 [root@Docker-Ubu1804-p11:~]# docker exec -it mysql sh sh-4.4# mysql -uroot -ppasswd mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.33 MySQL Community Server - GPL Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

 

#使用文件传递参数
[root@Docker-Ubu1804-p11:~]# cat env_mysql.list 
MYSQL_ROOT_PASSWORD=passwd
MYSQL_DATABASE=janzen_test
MYSQL_USER=janzen
MYSQL_PASSWORD=janzenpass

[root@Docker-Ubu1804-p11:~]# docker run --name some-mysql --env-file=env_mysql.list -d mysql
94e0a35875d9d1f8dd430177b0e7bb0960bd7f010d580185a223091cb70c75ca
[root@Docker-Ubu1804-p11:~]# docker exec -it some-mysql bash
bash-4.4# mysql -ujanzen -pjanzenpass janzen_test
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.33 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| janzen_test        |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql> 

 

posted @ 2023-04-28 04:51  Janzen_Q  阅读(617)  评论(0编辑  收藏  举报