小编Tho*_*eil的帖子

如何为Docker创建自己的基本映像?

根据Docker文档,要构建自己的映像,必须始终使用该FROM指令指定基本映像.

显然,在Docker索引中有很多图像可供选择,但如果我想构建自己的图像呢?那可能吗?

base如果我理解正确,图像是由Ubuntu构建的,我想试验一个Debian图像.另外,我想真正理解Docker base是如何工作的,而且图像对我来说仍然是一个黑盒子.


编辑: 有关创建基本映像的官方文档

docker

88
推荐指数
5
解决办法
7万
查看次数

如何使docker容器使用主机的/ etc/hosts文件?

我想这样做,以便我启动的docker容器使用与/etc/hosts我运行的主机上相同的设置.有没有办法做到这一点?

我知道--add-hostdocker run 有一个选项,但这并不是我想要的,因为主机的/etc/hosts文件在不同的机器上可能会有所不同,因此对我来说硬编码确切的IP /主机并不好--add-host.

docker

43
推荐指数
7
解决办法
5万
查看次数

selenium web驱动程序如何知道新窗口何时打开然后恢复执行

我在使用selenium web驱动程序自动化Web应用程序时遇到了问题.

该网页有一个按钮,单击该按钮可打开一个新窗口.当我使用以下代码时,它会抛出OpenQA.Selenium.NoSuchWindowException: No window found

WebDriver.FindElement(By.Id("id of the button that opens new window")).Click();
//Switch to new window
_WebDriver.SwitchTo().Window("new window name");
//Click on button present on the newly opened window
_WebDriver.FindElement(By.Id("id of button present on newly opened window")).Click();
Run Code Online (Sandbox Code Playgroud)

为解决上述问题,我Thread.Sleep(50000);在按钮单击和SwitchTo语句之间添加.

WebDriver.FindElement(By.Id("id of the button that opens new window")).Click();
Thread.Sleep(50000); //wait
//Switch to new window
_WebDriver.SwitchTo().Window("new window name");
//Click on button present on the newly opened window
_WebDriver.FindElement(By.Id("id of button present on newly opened window")).Click();
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题,但我不想使用该Thread.Sleep(50000); …

testing selenium window webdriver

27
推荐指数
2
解决办法
9万
查看次数

从Docker容器内部使用XDebug进行远程调试不起作用

我正在尝试设置一个停靠的AMP环境,无法让远程调试器工作.我的设置如下:

我有一个运行mysql的数据库容器,它像魅力一样工作.我使用以下Dockerfile构建了一个Docker镜像'phpmysqli'

FROM php:apache

RUN docker-php-ext-install mysqli mbstring

# zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
RUN pecl install xdebug
RUN echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> /usr/local/etc/php/php.ini
RUN touch /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini;

RUN echo 'date.timezone = Europe/Berlin' > /usr/local/etc/php/conf.d/date.ini
Run Code Online (Sandbox Code Playgroud)

我打电话

docker run --rm -ti  --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db  phpmysqli
Run Code Online (Sandbox Code Playgroud)

在这个phpinfo分别php -i显示xdebug 2.3.2启动并运行之后.

接下来,我在IntelliJ IDEA中设置一个名为'Docker'的服务器,其中包含Host 127.0.0.1,Port 8080和Debugger Xdebug.我在docker …

php remote-debugging xdebug intellij-idea docker

18
推荐指数
2
解决办法
1万
查看次数

如何通过docker run运行插入的sql文件?

我有以下插入文件:

INSERT INTO countries (id, country_code, name, ios3, numcode, withdrawn)
VALUES
    (1, 'AF', 'Afghanistan', 'AFG', 4, 'f'),
    (2, 'AL', 'Albania', 'ALB', 8, 'f'),
    (3, 'DZ', 'Algeria', 'DZA', 12, 'f'),
    (4, 'AS', 'American Samoa', 'ASM', 16, 'f'),
    (5, 'AD', 'Andorra', 'AND', 20, 'f'),
    (6, 'AO', 'Angola', 'AGO', 24, 'f'),
    (7, 'AI', 'Anguilla', 'AIA', 660, 'f'),
    (8, 'AQ', 'Antarctica', NULL, NULL, 'f'),
    (9, 'AG', 'Antigua and Barbuda', 'ATG', 28, 'f'),
    (10, 'AR', 'Argentina', 'ARG', 32, 'f'),
    (11, 'AM', 'Armenia', 'ARM', 51, 'f'), …
Run Code Online (Sandbox Code Playgroud)

psql docker

17
推荐指数
3
解决办法
1万
查看次数

如何自动更新Docker Hub的完整描述?

我正在使用Travis CI从Dockerfiles构建docker镜像,然后成功将它们推送到Docker Hub.

我已经创建了一个MD文件来描述图像以及如何使用它.我想在完整描述部分的Docker Hub上有相同的描述.

由于我将来可能会更新说明,因此我想让Travis CI使用新映像自动更新基于存储库中MD文件的描述.

谁知道怎么做?

travis-ci docker dockerhub docker-registry

10
推荐指数
2
解决办法
1843
查看次数

你可以将标志传递给docker运行的命令吗?

run命令的文档遵循以下语法:

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)

但是我有时发现我想要传递旗帜[COMMAND].

例如,我一直在处理这个图像,其中Dockerfile中[COMMAND]指定的是:

CMD ["/bin/bash", "-c", "/opt/solr/bin/solr -f"]
Run Code Online (Sandbox Code Playgroud)

有没有办法在标志上加以标记,"/opt/solr/bin/solr -f"以便它在表格中"/opt/solr/bin/solr -f [-MY FLAGS]"

我是否需要编辑DockerFile或者是否有一些内置功能?

docker

7
推荐指数
2
解决办法
6446
查看次数

使用 asyncData 为 nuxt.js 页面获取 http://api:1337/games net::ERR_NAME_NOT_RESOLVED

我对 docker 的设置有些复杂。一切都按预期工作,除了我有这个奇怪的问题。访问索引页或/pages/_id页我没有错误。但是当我尝试打开/other-page 时它崩溃了。所有人都使用相同的 API url。

打开/other-page时在控制台中发现错误:

获取http://api:1337/games net::ERR_NAME_NOT_RESOLVED

不知道该怎么办,有什么建议吗?

nuxt.config.js

  axios: {
    baseURL: 'http://api:1337'
  },
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '3'

services:
  api:
    build: .
    image: strapi/strapi
    environment:
      - APP_NAME=strapi-app
      - DATABASE_CLIENT=mongo
      - DATABASE_HOST=db
      - DATABASE_PORT=27017
      - DATABASE_NAME=strapi
      - DATABASE_USERNAME=
      - DATABASE_PASSWORD=
      - DATABASE_SSL=false
      - DATABASE_AUTHENTICATION_DATABASE=strapi
      - HOST=api
      - NODE_ENV=production
    ports:
      - 1337:1337
    volumes:
      - ./strapi-app:/usr/src/api/strapi-app
      #- /usr/src/api/strapi-app/node_modules
    depends_on:
      - db
    restart: always
    links:
      - db

  nuxt:
    # build: ./app/
    image: "registry.gitlab.com/username/package:latest"
    container_name: …
Run Code Online (Sandbox Code Playgroud)

docker strapi traefik nuxt.js

6
推荐指数
1
解决办法
3563
查看次数

在 docker compose 中设置副本的 Mongodb

我可以使用 docker compose.yml 文件设置用户名、密码和创建数据库

version: '3'

services:
  mongodb:
    image: mongo
    volumes:
      - /home/temp/finalewd/temp:/var/lib/mongodb
    restart: on-failure
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: XXXX
      MONGO_INITDB_ROOT_PASSWORD: XXXX
      MONGO_INITDB_DATABASE: XXXX
Run Code Online (Sandbox Code Playgroud)

它启动了新的 mongo 容器,数据库为 XXXX ,配置了用户名和密码。

但是当我尝试使用如下副本集设置 mongo docker 容器时,

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: on-failure
    volumes:
      - /home/temp/mongo/compose/data:/data/db
    entrypoint: [ "/usr/bin/mongod", "--bind_ip_all","--replSet", "rs0" ]
    environment:
      MONGO_INITDB_ROOT_USERNAME: XXXX
      MONGO_INITDB_ROOT_PASSWORD: XXXX
      MONGO_INITDB_DATABASE: XXXX
Run Code Online (Sandbox Code Playgroud)

使用上面的 docker-compose.yml,它会带上副本集,但不会创建数据库/用户名/密码。

为什么在上述情况下不使用环境变量?

任何帮助表示赞赏。

为托马斯的回答添加的内容:

使用 Thomas 的答案中的内容尝试了 docker-compose.yml,一旦 mongo 启动,我尝试了“rs.initiate 但它抛出了已经初始化的状态,所以在这种情况下如何使 mongo 具有主状态?

rs0:OTHER> rs.status(); …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query docker docker-compose

6
推荐指数
1
解决办法
7340
查看次数

bash中的字符串“显示”隐藏/控制“代码”

Python中有一个非常方便的函数:repr()应用于包含空白字符的字符串时,将打印出该字符串的表示形式,而不会导致任何人为的错误理解。

例如:

$ python -c "print repr(r'''abcde\rfghi\tjklmn\nopqr\bstuv\fwxyz''')"
'abcde\\rfghi\\tjklmn\\nopqr\\bstuv\\fwxyz'
Run Code Online (Sandbox Code Playgroud)

我如何在bash中使用printf做同样的事情?

我正在寻找的理想工具/技巧将完全打印出来

'abcd\refjh\bijk'
Run Code Online (Sandbox Code Playgroud)

用于命令

printf "abcd\refjh\bijk" | <something>
Run Code Online (Sandbox Code Playgroud)

其背后的目的是改进一种测试工具,该工具可以打印两个字符串之间的差异:

http_response_code=$(curl -s --head http://httpbin.org/ | head -1)  # will put "HTTP/1.1 200 OK\r" in $http_response_code
assert_equal "HTTP/1.1 200 OK" "$http_response_code"
> failed: strings do not match
> expected:   'HTTP/1.1 200 OK'
> actual:     'HTTP/1.1 200 OK'
Run Code Online (Sandbox Code Playgroud)

如您所见,当前的实现让用户对失败的原因一无所知,感到困惑。

理想情况下,我希望有以下输出:

> failed: strings do not match
> expected:   'HTTP/1.1 200 OK'
> actual:     'HTTP/1.1 200 OK\r'
Run Code Online (Sandbox Code Playgroud)

当前尝试:

  • printf $'\a\b\e\E\f\n\r\t\v\\\'\"' | cat …

string bash shell quoting ansi-c

5
推荐指数
1
解决办法
249
查看次数