创建容器
参数
参数 | 参数说明 |
---|
-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
2
3
4
5
| 如果从这个容器退出,会导致容器的停止。
docker attach 容器名/容器ID
如果从这个容器退出,容器不会停止。
docker exec -it 容器名/容器id /bin/bash
|
退出终端/容器
停止容器
删除
删除容器
1
2
| docker rm 容器名/容器ID
docker rm -f 容器名/容器ID # 强制删除
|
删除镜像
1
2
| docker rmi 镜像名/镜像id
docker rmi -f 镜像名/镜像id # 强制删除
|
查看容器日志
查看本地已经下载的镜像
查找 Docker Hub 上的镜像
- 使用docker search命令,这会在Docker Hub上搜索与关键字匹配的镜像,并将匹配的结果返回。
使用Docker Hub的网页界面进行搜索 在 https://hub.docker.com/ 上使用搜索框输入关键字,就能查找到与关键字匹配的镜像。
- 使用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的命令
- 查看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
- 给docker增加Nginx用户: 见
给docker增加使用的用户
部分。 - PHP执行docker命令: 完成以上过程,PHP中就可以通过shell_exec()、exec()或system()等函数执行docker的创建容器等命令。