Tag: shell

使用交互式shell创build新的容器

我想用Node.js创build一个新的容器,并在其中启动一个bash-shell来交互validation。 所以我做docker run node /bin/bash但它立即退出。 我做错了什么?

Docker shell'ls -l'缩进换行符

我将如何去设置docker镜像(比如ubuntu:latest的bash shell环境,以便在运行ls -l ,输出是我习惯的(直线列)? 即使使用ls -1我也会看到每一个换行符都是从上一行最后一个字符的位置开始的: 运行容器: docker run –rm -it ubuntu:latest bash root@b82014f4ddbf:/# ls -1 bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@b82014f4ddbf:/# 也许我错过了.bashrcconfiguration文件或其他常见的东西? TIA。

如何在Dockerfile中正确运行Docker cmds

Docker在Dockerfile中运行命令的方式与在启动容器后手动运行命令之间似乎有区别。 这似乎是由于你可以启动一个shell,一个(我假设)非Dockerfile与交互式shell之间运行诸如docker run -it docker run -it <some-img-id>非交互式shell。 我怎样才能在Docker容器中debugging运行命令,使其运行完全像命令从Dockerfile运行? 只是将/bin/bash –noprofile添加到run cmd就足够了吗? 或者从Dockerfile启动时环境还有什么不同?

为什么我的Docker容器启动后不能将控制权交还给terminal?

我有一个shell脚本,我用它来导出Envvariables。 这个脚本调用python脚本从运行我的主python脚本之前需要存储的web服务中获取某些值。 我试过使用RUN . /bot/env/setenv.sh RUN . /bot/env/setenv.sh ,但是这似乎并不使envvariables在最终容器中可用。 我试过把内容放在一个以调用python jbot.py结尾的entrypoint.sh文件中,但容器永远不会完成它的设置(我假设因为入口点内的脚本是一个连续的循环?) 我的entrypoint.sh看起来像这样: #!/bin/bash . /jirabot/env/setenv.sh python jbot.py 而setenv.sh只是: #!/bin/bash export SLACK_BOT_TOKEN="xoxb-token" export BOT_ID=`python env/print_bot_id.py ${SLACK_BOT_TOKEN}` 我的完整的Dockerfile是: FROM python:2 COPY jirabot/ /jirabot/ RUN pip install slackclient schedule jira WORKDIR /jirabot #CMD [ "python", "jbot.py" ] ENTRYPOINT [ "/jirabot/entrypoint.sh" ] 当我做docker run bot ,我可以validation应用程序正在运行(机器人响应我的请求相应)。 但是,输出中缺lessjbot.py中的所有print()语句 – 所以我有两个主要问题: […]

在mysql中插入用户定义的variablesCREATE USER

我想创build一个shell脚本在docker CLI中运行,并创build一个MySQL用户,并将主机IP作为命令行variables传递。 所以用我的脚本将是./create_user.sh 172.17.0.1 我试着开始只在sql语句部分插入variables,并使用这样的东西: #!/bin/sh docker exec -i atb-mariadb bash <<'EOF' mysql -uroot -pmypass set @ip='172.17.0.1'; CREATE USER 'exporter'@@ip IDENTIFIED BY 'mypass'; GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'172.17.0.1'; GRANT SELECT ON performance_schema.* TO 'exporter'@'172.17.0.1'; SELECT user, host FROM mysql.user; exit EOF 这导致语法错误,以及一些其他的我试过: CREATE USER CONCAT_WS('exporter','@',@ip) IDENTIFIED BY 'mypass'; CREATE USER 'exporter'@CONCAT_WS('',@ip) IDENTIFIED […]

在docker容器中首次启动splunk时是否可以跳过许可证协议页面?

我在创build容器的时候创build了一个Dockerfile,我需要在Splunk的背面创build多个login用户。 我正在得到splunk协议问题,无法跳过/接受关于build立容器的协议如下所示。 Dockerfile FROM splunk/splunk:latest ENV SPLUNK_HOME /opt/splunk RUN apt-get update && apt-get install -y wget COPY ./splunk-launch.conf /opt/splunk/etc/splunk-launch.conf COPY ./splunk.license /opt/splunk/etc/licenses/enterprise/splunk.license COPY ./My-app1 / /opt/splunk/etc/apps/My-app1 COPY ./My-app2 /opt/splunk/etc/apps/My-app2 COPY ./My-app3 /opt/splunk/etc/apps/My-app3 COPY ./splunk_user.sh /opt/splunk/bin/splunk_user.sh RUN chmod +x /opt/splunk/bin/splunk_user.sh RUN chown -R splunk:splunk /opt/splunk/bin/splunk_user.sh EXPOSE 8000/tcp 8089/tcp 8191/tcp 9997/tcp 1514 8088/tcp VOLUME [ “/opt/splunk/etc”, “/opt/splunk/var” […]

使用docker命令在shell中明确使用别名

我有一个别名在我的.bashrc是: alias ansible-galaxy='sudo docker run –rm -it -v $PWD:/app myregistry.com/ansible-galaxy:2.1.0.0' 在我的壳里,我必须这样做: ansible-galaxy -c -r -f galaxy.yml 在一个术语中写出完整的命令是否可行? 看来,如果我执行 sudo docker run –rm -it -v $PWD:/app myregistry.com/ansible-galaxy:2.1.0.0 -c -r -f galaxy.yml 它进入docker集装箱,并找不到docker主机中的galaxy.yml。 任何想法我应该如何解决它?

如何在Docker中侦听端口?

我试图configuration一个docker文件来运行一个脚本,一旦准备就绪。 基本上我希望我的微服务等待另一项服务的启动。 我正在阅读一本书中的教程,所以我有这个dockerfile: FROM openjdk:8-jdk-alpine RUN apk update && apk upgrade && apk add netcat-openbsd ARG JAR_FILE ADD target/${JAR_FILE} /usr/share/theexplorer/theexplorer.jar ADD run.sh run.sh RUN chmod +x run.sh CMD ./run.sh EXPOSE 8761 我有这个脚本(run.sh): echo "********************************************************" echo "Waiting for the configuration server to start on port $CONFIGSERVER_PORT" echo "********************************************************" while ! `nc -z configserver $CONFIGSERVER_PORT `; do […]

当在shell脚本中执行时,Docker kill不起作用

当在terminal中逐行手动运行命令时,以下工作正常: docker create -it –name test path docker start test docker exec test /bin/sh -c "go test ./…" docker stop test docker rm -test 但是,当我将它作为shell脚本运行时,Docker容器既不会停止也不会被移除。 #!/usr/bin/env bash set -e docker create -it –name test path docker start test docker exec test /bin/sh -c "go test ./…" docker stop test docker rm -test 我怎样才能使它在一个shell脚本内工作?

为什么试图杀死一个在Docker容器中的进程将我从中取出?

我的MacOS上有一个v6.10.0的节点服务器,它是从Dockerfile的CMD自动启动的。 通常在我的本地开发非集装箱环境中,我将使用CTRL + C来终止服务器。 无法(或不知道如何)在容器中这样做,我使用ps aux | grep node ps aux | grep node尝试手动终止进程。 所以,我得到这样的东西: myapp [master] :> kubectl exec -it web-3127363242-xb50k bash root@web-3127363242-xb50k:/usr/src/app# ps aux | grep node root 15 0.4 0.9 883000 35804 ? Sl 05:49 0:00 node /usr/src/app/node_modules/.bin/concurrent –kill-others npm run start-prod npm run start-prod-api root 43 0.1 0.6 743636 25240 ? […]