通过/etc/docker/daemon.json,我使用配置了用户命名空间userns-remap。我正在尝试启动一个nginx-proxy容器,但它需要访问 Docker 套接字,这要求它是真正的root。命名空间破坏了这一点,导致"operation not permitted"错误。
有没有一种方法可以告诉 Docker 不要将这个单独的容器放在命名空间中?如果可以通过 docker-compose 实现,那就更好了。
我的团队一直在运行在 VirtualBox 上的 Ubuntu 16.04 服务器上开发我们的项目。当新开发人员加入我们的项目时,帮助他们在 VirtualBox 上创建新的 Ubuntu 服务器并安装所有依赖项只是为了每次启动项目,这对我们来说是一个很大的麻烦。
我们决定用 Docker 解决这个麻烦。因此,我正在尝试使用以下Dockerfile和docker-compose.yml,在 Docker 上的 Ubuntu 上运行我们的项目,但我找不到很多资源,例如how to run Ubuntu on Docker. 我是否会按照以下方式在 Docker 上运行 Ubuntu 的正确方向?
我感到困惑的一件事是为什么当我ifconfig在 Docker 上运行的 Ubuntu 服务器上运行时无法获取 IP 地址?
文件
FROM ubuntu:16.04
RUN sudo apt-get update
RUN sudo apt-get install -y build-essential autoconf libtool
RUN sudo apt-get install -y python-setuptools python-dev python3-dev
RUN sudo apt-get install -y python-pip python3-pip
RUN sudo apt-get install -y python-virtualenv unixodbc-dev libffi-dev …Run Code Online (Sandbox Code Playgroud) 我在运行我的 mysql docker 时遇到了一些麻烦。这是我的错误:
testmysql | + echo 'Finished mysql_install_db'
testmysql | Finished mysql_install_db
testmysql | + pid=59
testmysql | + mysql=(mysql --protocol=socket -uroot -hlocalhost --socket=/var/run/mysqld/mysqld.sock)
testmysql | + for i in '{30..0}'
testmysql | + mysqld --verbose --skip-networking --socket=/var/run/mysqld/mysqld.sock
testmysql | + echo 'SELECT 1'
testmysql | + mysql --protocol=socket -uroot -hlocalhost '--socket=/var/run/mysqld/mysqld.sock --verbose'
testmysql | + echo 'MySQL init process in progress...'
testmysql | + sleep 1
testmysql | MySQL init process in progress...
testmysql | 2017-02-06 21:44:19 …Run Code Online (Sandbox Code Playgroud) 在过去的一周里,我一直在为一个非常奇怪的网络问题而苦苦挣扎。总之,除非我运行tcpdump -i br-XXXXX,否则我的容器无法访问互联网(这使网桥进入混杂模式)
我使用 Compose 提出了两个容器:
version: '3'
services:
seafile:
build: ./seafile/build
container_name: seafile
restart: always
ports:
- 8080:80
networks:
seafile_net:
ipv4_address: 192.168.0.2
volumes:
- /mnt/gluster/files/redacted/data:/shared
environment:
- DB_HOST=10.200.7.100
- DB_PASSWD=redacted
- TIME_ZONE=America/Chicago
depends_on:
- seafile-memcached
seafile-memcached:
image: memcached:1.5.6
container_name: seafile-memcached
restart: always
networks:
seafile_net:
ipv4_address: 192.168.0.3
entrypoint: memcached -m 256
networks:
seafile_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.0.0/24
Run Code Online (Sandbox Code Playgroud)
运行的容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
93b1b773ad4e docker_seafile "/sbin/my_init -- …Run Code Online (Sandbox Code Playgroud) 我仍然在努力理解为什么我的 ipmi_exporter 容器不会与我的 Prometheus、Grafana、snmp_exporter 和 Alertmanager 在同一个“pod”中运行。当我调出“pod”时,docker-compose 说ipmi_exporter 已启动,但docker-compose ps找不到容器。我希望能够看到包含 ipmi_exporter 启动的日志,如果我的帖子标题中没有明确说明的话。
另外,docker-compose 容器组叫什么?Pod 是 K8 的东西。
我们目前正在使用 Docker 进行开发,目前正在研究如何使用 Docker 在其他环境中运行我们的软件,例如登台和生产。
我们现在要做的是使用 Jenkins 编译我们的 Java 软件,然后 - 在同一个 Jenkins 构建中 - 还构建一个 Docker 镜像,Java 软件将使用 docker-compose 在其中运行。
现在,在构建 Docker 映像后,我们需要将该映像传送到运行软件的(远程)Docker 主机。这个远程 Docker 主机与运行 Jenkins 的主机不同。我相信我们可以通过遵循这个问题的公认答案来做到这一点。
但是,一旦将映像复制到 Docker 主机 - 我们如何使用 启动该映像docker-compose?我们复制的图像只是图像 - 而不是docker-compose.yml文件或Dockerfile就此而言。