文章

Docker

如何使用Docker。

Docker

创建容器

参数

参数参数说明
-i以交互模式运行容器,通常与 -t 同时使用
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-P随机端口映射,大写P
-p指定端口映射,小写p
--name--name=NAME为容器指定名字为NAME,不使用的话系统自动为容器命名
--net--net=网络模式,bridge、host、none、container、自定义网络

bridge:为每一个容器分配、设置IP等,并将容器连接到docker0的虚拟网桥。若没有特别申明,则为默认自带一个IP以及网络设置。(一人一个) host:容器不会虚拟出自己的网卡、IP等,而是使用宿主机的IP和端口。(多人一个) none:容器有自己独立的Network namespace,但是没有进行任何的相关配置。(有,但是是空的) container:新创建的容器不会创建自己的网卡,没有自己的IP,也不会进行相应的配置。而是和一个指定的容器共享IP端口范围等。(自己没有,用别人的) 自定义网络

run

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -it ubuntu
docker run -it ubuntu:20.04
docker run -it --name=jiuyu ubuntu

docker run -itd --name=jiuyu ubuntu /bin/bash

# docker run -itd --name=容器名 --net=网络模式 镜像名 /bin/bash
docker run -itd --name=jiuyu --net=bridge ubuntu /bin/bash

# docker run -itd --name 容器名 --net 网络模式 镜像名 /bin/bash
docker run -itd --name jiuyu --net host ubuntu /bin/bash

# 配置gpu
docker run -itd --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --net=host --name=容器名 --hostname=主机名 镜像名

create

1
2
docker create -it ubuntu:20.04 /bin/bash
docker create -it --name 容器名字 ubuntu:20.04 /bin/bash

启动容器

1
docker start 容器名/容器ID

进入容器

1
2
3
4
5
如果从这个容器退出,会导致容器的停止。
docker attach 容器名/容器ID

如果从这个容器退出,容器不会停止。
docker exec -it 容器名/容器id /bin/bash

退出终端/容器

1
exit

停止容器

1
docker stop 容器名/容器ID

删除

删除容器

1
2
docker rm 容器名/容器ID
docker rm -f 容器名/容器ID  # 强制删除

删除镜像

1
2
docker rmi 镜像名/镜像id
docker rmi -f 镜像名/镜像id # 强制删除

查看容器日志

1
docker logs 容器名/容器id

查看本地已经下载的镜像

1
docker images

查找 Docker Hub 上的镜像

  1. 使用docker search命令,这会在Docker Hub上搜索与关键字匹配的镜像,并将匹配的结果返回。
    1
    
     docker search <镜像关键字>
    
  2. 使用Docker Hub的网页界面进行搜索 在 https://hub.docker.com/ 上使用搜索框输入关键字,就能查找到与关键字匹配的镜像。

  3. 使用Docker客户端的远程API进行搜索。例如,可以使用Docker SDK for Python来实现:
    1
    2
    3
    4
    5
    6
    
     import docker
    
     client = docker.from_env()
     results = client.images.search('<镜像关键字>')
     for result in results:
         print(result)
    

给docker增加使用的用户

1.将用户添加到docker组。

1
sudo usermod -aG docker <username>

重启Docker守护进程,以使新用户能够访问Docker套接字。可以使用以下命令来重启Docker守护进程:

1
sudo systemctl restart docker

将Docker服务配置为使用新用户

1
2
使用以下命令来打开Docker系统服务文件
sudo vim /etc/systemd/system/muli-user.target.wants/docker.service
1
2
3
4
在文件中,我们需要将以下内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改为(这个修改将Docker服务配置为使用docker组):
ExecStart=/usr/bin/dockerd --group docker -H fd:// --containerd=/run/containerd/containerd.sock
1
2
3
保存并关闭文件后,我们需要重新加载Docker系统服务:
sudo systemctl daemon-reload
sudo systemctl restart docker

现在,我们已经成功将非root用户指定为默认用户,可以运行Docker容器。

原文链接:https://www.php.cn/faq/520674.html

Nginx网站后台PHP执行docker的命令

  1. 查看nginx的启动用户的用户名

    1、打开 Nginx 配置文件 sudo vim /etc/nginx/nginx.conf
    2、找到 user 指令所在的行,通常位于配置文件的开头部分,如 user nobody;    nobody就是用户名、 user www-data;    www-data就是用户名
    3、关闭nginx.conf
    原文链接:https://zhuanlan.zhihu.com/p/610962366

  2. 给docker增加Nginx用户: 见给docker增加使用的用户部分。
  3. PHP执行docker命令: 完成以上过程,PHP中就可以通过shell_exec()、exec()或system()等函数执行docker的创建容器等命令。
本文由作者按照 CC BY 4.0 进行授权