【Docker】容器管理

2023-06-28,,

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

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>

【Docker】容器管理的相关教程结束。

《【Docker】容器管理.doc》

下载本文的Word格式文档,以方便收藏与打印。