docker run -u
时间: 2023-12-31 13:24:48 浏览: 22
docker run命令用于创建和启动容器。参数-u用于指定容器内部的用户或用户组。具体来说,-u参数可以接受两种形式的值:用户ID(UID)或用户名:用户组名(UID:GID)。使用-u参数可以在容器内部以指定的用户身份运行应用程序。
以下是一个示例:
```shell
docker run -u 1000 ubuntu:latest
```
上述命令将在一个名为ubuntu的容器中以用户ID 1000的身份运行最新版本的Ubuntu镜像。
相关问题
1、制作基于base镜像rockylinu9,安装源码mysql版本8.0软件。要求启动默认无用户登录,用户可以使用 docker run -d centos-mysql:8.0 -u root -p登录。
可以按照以下步骤来实现:
1. 创建一个 Dockerfile 文件,内容如下:
```
FROM rockylinux/rockylinux:8.4
RUN dnf update -y && \
dnf install -y wget && \
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm && \
rpm -ivh mysql80-community-release-el8-1.noarch.rpm && \
dnf install -y mysql-community-server && \
dnf clean all && \
rm -rf /var/cache/dnf/* && \
rm -rf /tmp/mysql80-community-release-el8-1.noarch.rpm && \
mkdir /docker-entrypoint-initdb.d
COPY ./my.cnf /etc/my.cnf
RUN chown -R mysql:mysql /var/lib/mysql /var/run/mysqld && \
chmod 777 /var/run/mysqld
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mysqld"]
```
2. 创建一个 my.cnf 文件,内容如下:
```
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
max_allowed_packet=256M
```
3. 创建一个 docker-entrypoint.sh 文件,内容如下:
```
#!/bin/bash
set -eo pipefail
if [ ! -d "/var/lib/mysql/mysql" ]; then
echo "Initializing MySQL..."
/usr/sbin/mysqld --initialize-insecure --user=mysql
echo "MySQL initialized"
fi
echo "Starting MySQL..."
exec /usr/sbin/mysqld --user=mysql --console
```
4. 在 Dockerfile 所在目录下执行以下命令进行构建:
```
docker build -t centos-mysql:8.0 .
```
5. 执行以下命令运行容器:
```
docker run -d -p 3306:3306 -v /path/to/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<your_password> --name mysql centos-mysql:8.0
```
其中,`/path/to/data` 是你想要将容器中的 MySQL 数据保存到本地的路径,`<your_password>` 是你为 MySQL root 用户设置的密码。运行成功后,你就可以使用以下命令登录到 MySQL:
```
docker run -it --rm --network container:mysql centos-mysql:8.0 mysql -u root -p
```
注意,这里使用了 `--network container:mysql` 参数,让容器使用已有的 MySQL 容器的网络命名空间,从而可以直接访问 MySQL。
docker run -d --name hyperf -v /mnt/hgfs/www/hyperf/:/hyperf-skeleton -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole docker exec -it hyperf bash cd /hyperf-skeleton composer config -g repo.packagist composer https://mirrors.aliyun.com/composer composer create-project hyperf/hyperf-skeleton php /hyperf-skeleton/hyperf-skeleton/bin/hyperf.php start写个yaml文件
好的,以下是一个安装 Hyperf 框架的 `yaml` 文件示例:
```yaml
stages:
- install
- start
install:
stage: install
image: docker:latest
services:
- docker:dind
script:
- docker run -d --name hyperf -v /mnt/hgfs/www/hyperf/:/hyperf-skeleton -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole
- docker exec -it hyperf sh -c "cd /hyperf-skeleton && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer && composer create-project hyperf/hyperf-skeleton"
artifacts:
paths:
- /mnt/hgfs/www/hyperf/hyperf-skeleton
start:
stage: start
image: docker:latest
services:
- docker:dind
script:
- docker start hyperf
- docker exec -it hyperf sh -c "cd /hyperf-skeleton && php /hyperf-skeleton/bin/hyperf.php start"
```
这个 YAML 文件定义了两个阶段,第一个阶段为 `install`,用于在 Docker 容器中安装 Hyperf 框架及其相关依赖;第二个阶段为 `start`,用于在 Docker 容器中启动 Hyperf 框架。在 `install` 阶段中,我们使用了 `docker` 镜像,在 Docker 容器中执行了 `docker run` 命令来创建 Hyperf 容器,并执行了 `docker exec` 命令来执行安装 Hyperf 框架及其相关依赖的命令。在 `start` 阶段中,我们同样使用了 `docker` 镜像,在 Docker 容器中执行了 `docker start` 命令来启动 Hyperf 容器,并执行了 `docker exec` 命令来启动 Hyperf 框架。在 `install` 阶段中,我们还使用了 `artifacts` 关键字来指定将 Hyperf 框架所在的目录 `/mnt/hgfs/www/hyperf/hyperf-skeleton` 作为构建产物,以便在后续的阶段中使用。