以下之列出常用命令,具体的命令可以使用 --help 查看。或者去网站 命令大全 查看
镜像命令
查找所需镜像
$ sudo docker search php
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
php While designed for web development, the PHP … 6276 [OK]
phpmyadmin/phpmyadmin A web interface for MySQL and MariaDB. 1140 [OK]
adminer Database management in a single PHP file. 636 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 380 [OK]
webdevops/php-nginx Nginx with PHP-FPM 212 [OK]
php-zendserver Zend Server - the integrated PHP application… 200 [OK]
拉取镜像
> $ sudo docker pull php
Using default tag: latest
latest: Pulling from library/php
eff15d958d66: Pull complete
933427dc39f7: Pull complete
35bb08dc7ee2: Pull complete
58a3f26800d7: Pull complete
1dc176a6a0e0: Pull complete
d94706221d1b: Pull complete
1b6af332d4c1: Pull complete
daae188bbaa3: Pull complete
99734ab788a5: Pull complete
Digest: sha256:5c1eabac56c89b7c5397b7de706b8532ed115af6bedf6efe13640f695afbc9ef
Status: Downloaded newer image for php:latest
docker.io/library/php:latest
当不指定tag时 拉取下来的就是最新的,当然也可以向下面这样指定的
> $ sudo docker pull php:8.0.13
8.0.13: Pulling from library/php
Digest: sha256:5c1eabac56c89b7c5397b7de706b8532ed115af6bedf6efe13640f695afbc9ef
Status: Downloaded newer image for php:8.0.13
docker.io/library/php:8.0.13
查看镜像
我们可以看到刚刚pull下来的两个镜像都有了。
lighthouse@VM-8-11-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 8.0.13 01ce2cfc916a 4 days ago 476MB
php latest 01ce2cfc916a 4 days ago 476MB
删除镜像
如果我们需要删除第一个拉取下来的镜像,我直接执行:
lighthouse@VM-8-11-ubuntu:~$ sudo docker rmi -f php:latest
Untagged: php:latest
lighthouse@VM-8-11-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 8.0.13 01ce2cfc916a 4 days ago 476MB
容器命令
运行容器
lighthouse@VM-8-11-ubuntu:~$ sudo docker run --name myphp php:latest
Unable to find image 'php:latest' locally
latest: Pulling from library/php
Digest: sha256:5c1eabac56c89b7c5397b7de706b8532ed115af6bedf6efe13640f695afbc9ef
Status: Downloaded newer image for php:latest
47afd641e9e50245056414a44d6bbe001502ba527f9d549138723dfdc85fadaa
参数说明:
1. -d: 后台运行容器,并返回容器ID;
2. --name="myphp": 为容器指定一个名称;
3. -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
4. ... 还有很多参数可以参考文档
后台启动容器
root@VM-8-11-ubuntu:/home/lighthouse# docker run -d centos
f2a50995b32a3ec03fe828e44ee052da518d09a092413a0919634b802fa2520e
root@VM-8-11-ubuntu:/home/lighthouse# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2a50995b32a centos "/bin/bash" 6 seconds ago Exited (0) 5 seconds ago affectionate_satoshi
# 问题docker ps,发现centos 停止了
# 这里有个常见的问题,docker容器使用后台运行,必须要有一个前台进程,docker发现没有应用会自动停止。
# php容器启动后,发现自己没有踢动服务,就会立刻停止,就表示没有程序了。
查看容器
我们可以看到运行的容器是退出的也就是不在后台运行了
lighthouse@VM-8-11-ubuntu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PO
RTS NAMES
47afd641e9e5 php:latest "docker-php-entrypoi…" 12 minutes ago Exited (0) 12 minutes ago
myphp
// 查看正在运行的容器
lighthouse@VM-8-11-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45678eaa1fb6 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 80/tcp mynginx
在这我们发现明明 -d 为何还是退出了,这是因为没有前台运行进程,如果想要让它在后台运行也是有办法的。
docker run -it 就可以了
lighthouse@VM-8-11-ubuntu:~$ sudo docker run --name=myphp -d -it php:latest
5d6ed68ee6f7662d7973a92ab9cdc6ad6523e7d7b48ff50b58cf81178f585c64
lighthouse@VM-8-11-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d6ed68ee6f7 php:latest "docker-php-entrypoi…" 6 seconds ago Up 5 seconds
查看容器的信息/元数据
lighthouse@VM-8-11-ubuntu:~$ sudo docker inspect 5d6ed68ee6f7
[
{
"Id": "5d6ed68ee6f7662d7973a92ab9cdc6ad6523e7d7b48ff50b58cf81178f585c64",
"Created": "2021-11-24T09:03:13.752426576Z",
"Path": "docker-php-entrypoint",
"Args": [
"php",
"-a"
],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-11-24T09:03:14.09133713Z",
"FinishedAt": "2021-11-24T09:03:14.127123376Z"
},
"Image": "sha256:01ce2cfc916a6b519eda5e8fa22416e7830c1b51e644bd8647d5c24ac24fe5bd",
"ResolvConfPath": "/var/lib/docker/containers/47afd641e9e50245056414a44d6bbe001502ba527f9d54
9138723dfdc85fadaa/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/47afd641e9e50245056414a44d6bbe001502ba527f9d5491
38723dfdc85fadaa/hostname",
容器删除
docker rm 容器id #单个删除
docker rm -f $(docker ps -aq) # 全部删除 需要root命令
docker ps -a -q | xargs docker rm # 删除所有
lighthouse@VM-8-11-ubuntu:~$ sudo docker rm 47afd641e9e5
47afd641e9e5
lighthouse@VM-8-11-ubuntu:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
// 删除所有需要root权限
lighthouse@VM-8-11-ubuntu:~$ sudo docker rm -f $(docker ps -aq)
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.
sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker
.sock: connect: permission denied
"docker rm" requires at least 1 argument.
lighthouse@VM-8-11-ubuntu:~$ su root
Password:
root@VM-8-11-ubuntu:/home/lighthouse# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
03332f38e0ba php:latest "docker-php-entrypoi…" 11 minutes ago Exited (0) 11 minutes ago
myphp
1fecd247f3fd nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours
80/tcp mynginx
root@VM-8-11-ubuntu:/home/lighthouse# docker rm -f $(docker ps -aq)
03332f38e0ba
45678eaa1fb6
停止容器
docker stop 容器id
root@VM-8-11-ubuntu:/home/lighthouse# docker stop 1fecd247f3fd
1fecd247f3fd
启动容器
docker start 容器id
root@VM-8-11-ubuntu:/home/lighthouse# docker start 1fecd247f3fd
1fecd247f3fd
进入容器
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d: 分离模式:在后台运行
-i: 即使没有附加也保持STDIN打开
-t: 分配一个伪终端
root@VM-8-11-ubuntu:/home/lighthouse# docker exec -it mynginx /bin/sh
#
也可以用容器id进入
root@VM-8-11-ubuntu:/home/lighthouse# docker exec -it 1fecd247f3fd /bin/sh
#
docker attach 容器名/容器ID 连接正在运行中的容器
退出容器
- exit
- Ctrl+P+Q 保持后台运行 不断开
- ctrl+D
拓展命令
- docker stop $(docker ps -aq) && docker rm $(docker ps -aq) // 停止所有容器 并删除所有容器
- docker ps -a -q | docker rm /// 删除所有停止的容器
- docker ps -a -q | xargs docker rm // 删除所有停止的容器
- docker images -a -q| xargs docker rmi // 删除所有镜像