我正在开发我的第一个 docker-compose.yml,其中包含一个 Rails 应用程序。
我应该如何处理 .gitignore 文件?
在主目录中,我有:
我在相关的容器目录中生成了一个 Rails 应用程序。这包括标准生成的 .gitignore 文件。
我应该移动的.gitignore到主目录,并把所有的忽略在一个地方 或 离开它它在哪里,并保持忽略在容器目录级别。
有什么我没见过的陷阱吗?
我有一个docker-compose.yml:
master:
build: .
slave:
image: master
hostname: slave
command: run_slave
Run Code Online (Sandbox Code Playgroud)
如何docker-compose scale slave=5生成具有唯一主机名的机器?
...例如这样的事情:
slave1
slave2
slave3
slave4
slave5
Run Code Online (Sandbox Code Playgroud) 我正在使用go-dockerclient库,我想使用CreateContainer go-dockerclient 方法创建容器,但是我应该在哪里传递我创建此函数的 docker 图像 ID
func CreateContainer(w http.ResponseWriter, r *http.Request){
client,err:=docker.NewTLSClient(Endpoint,Cert,Key,Ca)
if err!=nil{
panic(err)
}
container,er:=client.CreateContainer(docker.CreateContainerOptions{Name:"cont"})
if er!=nil{
panic(err)
}
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我有一个给定的图像 ID,我应该在哪里添加它?
是否可以run在容器启动期间使用的操作期间向docker容器提供文件?
基本上我想提供类似于一个txt文件plugins.txt中詹金斯泊坞窗到Tomcat服务器。该文件应包含name:version要在容器启动期间下载的 .war 和 .jar 文件的名称和版本 ( )。我希望这种设置能够更灵活地为客户提供定制的容器,而不是拥有客户特定的图像。但对我来说最大的问题是:
我试图了解 ecs-cli docker-compose 是否(以及如何)注册任务定义。
aws 文档声明它:“与 Docker 组合文件一起工作以创建任务定义和管理任务。” ecs-cli-compose 文档似乎没有提到任务注册。
http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cmd-ecs-cli-compose.html
然而,注册一个任务定义似乎是一个相当繁琐的过程,涉及一个复杂的 json 文件,其中定义了 ai)“家庭”,ii) 一组可接受的容器定义和 iii) 一个或多个可选任务角色。
http://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html
任何帮助消除我的困惑将不胜感激。
这是docker-compose.yml
版本:“ 3”
services:
web:
build: ./rqiim
command: curl "127.0.0.1:27017"
volumes:
- ./rqiim:/app
- /app/node_modules/
environment:
- MONGO_HOSTNAME=127.0.0.1
ports:
- "8080:8080"
networks:
- host
mongodb:
image: mongo:3.4.18-jessie
container_name: mongodb
volumes:
- /data/db:/data/db
- ./mongo:/etc/mongo
command: --config /etc/mongo/mongod.conf
hostname: mongod1
ports:
- "27017:27017"
networks:
- host
networks:
host:
Run Code Online (Sandbox Code Playgroud)
当我运行时,docker-compose up我得到的Failed to connect to 127.0.0.1 port 27017: Connection refused
似乎是问题所在,它们在同一网络上,再加上我从docker外部从本地连接到MongoDB容器就好了。
这是内容 /etc/mongo/mongod.conf
storage:
dbPath: /data/db
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces …Run Code Online (Sandbox Code Playgroud) 我有一个docker-compose文件:
version: '3.4'
services:
nginx:
container_name: some-nginx
image: nginx:latest
restart: always
ports:
- 80:80
- 443:443
mongodb:
container_name: some-mongo
image: mongo:latest
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
ports:
- 27017:27017
command: mongod --smallfiles --logpath=/dev/null # --quiet
Run Code Online (Sandbox Code Playgroud)
我想使用命令推送到Amazon Elastic Container Registry(ECR):
docker tag testapper:latest 619625705037.dkr.ecr.us-east-2.amazonaws.com/testapper:latest
Run Code Online (Sandbox Code Playgroud)
但我收到一条消息:
来自守护程序的错误响应:没有这样的图像:testapper:latest
当我跑步时,docker-compose build我收到了这条消息:
nginx uses an image, skipping
mongodb uses an image, skipping
Run Code Online (Sandbox Code Playgroud)
这是什么意思?如何将我的图像推送到ECR?
我使用的建议,从这个帖子来实现多克的秘密,这样我可以使用本地SSH密钥验证用户访问Github上我的容器。我在MacOS上,没有使用Docker swarm。这是我的设置:
docker-compose.yml
version: '3.1'
services:
[servicename]:
secrets:
- ssh_private_key
[...]
secrets:
ssh_private_key:
file: ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
Docker文件
FROM python:3.7 as intermediate
RUN mkdir /root/.ssh/
RUN ln -s /run/secrets/ssh_private_key /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./
RUN pip install --no-cache-dir -r requirements_private_repos.txt
Run Code Online (Sandbox Code Playgroud)
当我尝试运行docker-compose build并使用SSH密钥从专用远程存储库中提取信息时,出现以下错误:
Permission denied (publickey).
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)
我能够远程访问docker映像,并看到正在创建并填充秘密/run/secrets/ssh_private_key。
在Dockerfile中使用链接时,为什么链接不起作用?如果Docker机密不是正确的方法,是否有更好的方法可以将SSH密钥从MacOS共享到Docker?
我一直在关注有关docker服务和集群的本教程。但是我在不同的Docker容器之间建立网络时遇到了一些麻烦。
以下是我的docker-compose.yml文件,它基本上包含两个服务。一个只是连接到两个网络的redis映像(尽管第二个目前尚无用)。另一个是我的应用程序,需要连接到Redis。因此,我选择为redis服务提供一个静态IP。
version: "3"
services:
my_redis:
image: redis
ports:
- "6379:6379"
networks:
first_network:
ipv4_address: 172.20.1.1
second_network:
ipv4_address: 172.30.1.1
my_app:
build:
context: .
dockerfile: Dockerfile_my_app
image: my_app_image
depends_on:
- my_redis
deploy:
replicas: 1 # 4
networks:
- first_network
networks:
first_network:
ipam:
config:
- subnet: 172.20.1.0/24
second_network:
ipam:
config:
- subnet: 172.30.1.0/24
Run Code Online (Sandbox Code Playgroud)
以下是我的Dockerfile my_app:
FROM python:3.7
WORKDIR /app
COPY . /app
RUN pip3 install --trusted-host pypi.python.org -r requirements.txt
CMD ip a && wait-for-it.sh 172.20.1.1:6379 && PYTHONPATH=. python3 …Run Code Online (Sandbox Code Playgroud) 我们有带有docker和docker compose的Linux redhat机器
现在我们要清理所有容器和图像-就像我们刮了一个新的docker
据我了解,我们需要按此顺序执行以下过程:
我对这个程序正确吗?,或者我错过了什么?
1. docker stop <CONTAINER ID>
2. docker container rm <CONTAINER ID>
3. docker image rm <IMAGE ID>
Run Code Online (Sandbox Code Playgroud)
例
第一次找到-容器ID
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
654fa81f4439 confluentinc/cp-enterprise-control-center:5.0.0 "/etc/confluent/dock…" 9 minutes ago Up 9 minutes 0.0.0.0:9021->9021/tcp control-center
Run Code Online (Sandbox Code Playgroud)
1)
停止容器
docker stop 654fa81f4439
654fa81f4439
Run Code Online (Sandbox Code Playgroud)
2)
删除容器
docker container rm 654fa81f4439
654fa81f4439
Run Code Online (Sandbox Code Playgroud)
3)
查找图像ID
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
confluentinc/cp-enterprise-control-center 5.0.0 e0bd9a5edb95 15 months ago 617MB
Run Code Online (Sandbox Code Playgroud)
删除图片
ocker image rm …Run Code Online (Sandbox Code Playgroud) docker-compose ×10
docker ×9
containers ×2
dockerfile ×2
git ×2
amazon-ecr ×1
amazon-ecs ×1
go ×1
macos ×1
mongodb ×1
redhat ×1
ssh ×1