容器.md
安装
参考链接:https://u.sb/debian-install-docker/
命令
run
常用
- –rm 运行后自动删除,常用于测试
- –net=host 使用宿主机网络拓扑
- -e $env_opt=$value 设置环境变量
- -d 后台运行,避免退出
- -it 开启交互式命令行
- -v $host_dir:$container_dir 挂载卷
- -p $host_port:$container_port 端口映射
- -name $name 为容器起名
- -dns $addr 指定 dns 地址
- –privileged 赋予 root 权限
- –cap-add SYS_ADMIN 赋予更高权限
设置代理
背景是 docker 源国内访问不了,使用代理访问 docker 源
步骤
1 |
|
1 |
|
设置完此文件后, 所有 docker 容器中的 http_proxy no_proxy 都会被设置为这个值, 目前未找到在 dockerfile 中修改 http_proxy 值的方法, 只能在 docker run 时设置 -e http_proxy=”” 来设置
create
docker create
命令用于创建一个新的容器,但并不会自动启动该容器。这个命令允许在不启动容器的情况下定义容器的配置和资源,这样可以稍后使用 docker start
命令来启动容器。
基本语法
1 |
|
- IMAGE: 要基于哪个镜像创建容器。
- COMMAND: 容器启动时要执行的命令(可选)。
- [ARG…]: 传递给命令的参数(可选)。
常用选项
以下是一些常用的 docker create
选项:
- -a, –attach: 附加到 STDIN, STDOUT, STDERR。
- –add-host: 添加自定义主机名到 IP 映射(例如
--add-host=hostname:IP
)。 - –name: 指定容器的名称。
- -e, –env: 设置环境变量(例如
-e "MY_VAR=my_value"
)。 - -p, –publish: 映射主机的端口到容器的端口(例如
-p 8080:80
)。 - -v, –volume: 挂载主机目录或数据卷到容器(例如
-v /host/path:/container/path
)。 - –network: 指定容器连接的网络(默认是
bridge
网络)。 - –restart: 设置容器的重启策略(例如
--restart=always
)。 - –cpus: 限制容器使用的 CPU 数量。
- –memory: 限制容器使用的内存(例如
--memory=512m
)。 - –entrypoint: 覆盖镜像的默认入口点。
- –workdir: 设置容器内的工作目录。
- –hostname: 设置容器的主机名。
示例
创建一个简单的容器:
创建一个基于
ubuntu
镜像的容器,但不启动它:1
docker create ubuntu
这个命令会返回一个容器 ID,可以用于后续的操作。
创建一个指定名称的容器:
创建一个名为
my_container
的容器:1
docker create --name my_container ubuntu
创建容器并设置环境变量和端口映射:
创建一个容器,设置环境变量并将主机的 8080 端口映射到容器的 80 端口:
1
docker create --name my_web_server -e "ENV=production" -p 8080:80 nginx
创建容器并挂载卷:
创建一个容器,并将主机目录挂载到容器内:
1
docker create --name my_data_container -v /host/data:/container/data ubuntu
创建容器并指定网络:
创建一个容器,并将其连接到指定的 Docker 网络:
1
docker create --name my_networked_container --network my_network alpine
与 docker run
的区别
docker create
只创建容器,不启动它,而 docker run
同时创建并启动容器。docker create
适用于需要预先配置容器,然后稍后根据需要启动它的场景。
典型的使用场景
- 预配置容器:可以先创建容器,然后在需要时启动它们,而无需每次都重新创建。
- 批量启动容器:在批量启动容器之前,可以先批量创建容器,然后根据需要分别启动它们。
- 资源预分配:在实际启动容器之前,可以通过创建容器来预先分配资源(如网络、卷等),以确保环境准备就绪。
容器.md
https://abrance.github.io/2024/04/09/domain/虚拟化/docker/