容器.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
2
3
4
5
6
7
#sudo mkdir /etc/systemd/system/docker.service.d && cd $_
sudo mkdir /tmp/temp && cd $_
cat << EOF > proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14

xiaoy@debian12:/etc/docker$ cat ~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://172.17.0.1:7890",
"httpsProxy": "http://172.17.0.1:7890",
"noProxy": "localhost,172.17.0.1/16,127.0.0.1,192.168.30.1/16,*.ouryun.cn"
}
}
}

设置完此文件后, 所有 docker 容器中的 http_proxy no_proxy 都会被设置为这个值, 目前未找到在 dockerfile 中修改 http_proxy 值的方法, 只能在 docker run 时设置 -e http_proxy=”” 来设置

create

docker create 命令用于创建一个新的容器,但并不会自动启动该容器。这个命令允许在不启动容器的情况下定义容器的配置和资源,这样可以稍后使用 docker start 命令来启动容器。

基本语法

1
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 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: 设置容器的主机名。

示例

  1. 创建一个简单的容器

    创建一个基于 ubuntu 镜像的容器,但不启动它:

    1
    docker create ubuntu

    这个命令会返回一个容器 ID,可以用于后续的操作。

  2. 创建一个指定名称的容器

    创建一个名为 my_container 的容器:

    1
    docker create --name my_container ubuntu
  3. 创建容器并设置环境变量和端口映射

    创建一个容器,设置环境变量并将主机的 8080 端口映射到容器的 80 端口:

    1
    docker create --name my_web_server -e "ENV=production" -p 8080:80 nginx
  4. 创建容器并挂载卷

    创建一个容器,并将主机目录挂载到容器内:

    1
    docker create --name my_data_container -v /host/data:/container/data ubuntu
  5. 创建容器并指定网络

    创建一个容器,并将其连接到指定的 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/
Author
xiaoy
Posted on
April 9, 2024
Licensed under