【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>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略