Tôi đang sử dụng CentOS 7 làm máy chủ lưu trữ docker và centos: 6 Hình ảnh Docker.Cách xử lý tên máy chủ cụ thể như -h tùy chọn trong Dockerfile
Tôi muốn cài đặt một số phần mềm yêu cầu tên máy chủ có thể phân giải là địa chỉ không lặp lại. Nếu tôi chạy một hình ảnh Docker với tùy chọn -h như
docker run -i -t -h myhost centos:6 /bin/bash
Sau đó, tôi có thể cài đặt phần mềm vì/etc/hosts trong container tự động cấu hình như
[[email protected] /]# cat /etc/hosts
172.17.0.7 myhost
127.0.0.1 localhost
[[email protected] /]# ping myhost
PING myhost (172.17.0.7) 56(84) bytes of data.
64 bytes from myhost (172.17.0.7): icmp_seq=1 ttl=64 time=0.033 ms
Nhưng tôi không thể sử dụng cùng một cách nếu tôi tạo một hình ảnh từ Dockerfile. Tôi đã thử nghiệm tạo ra một hình ảnh sử dụng sau Dockerfile
FROM centos:6
ENV HOSTNAME myhost
RUN ping myhost
Trong Docker quá trình xây dựng, hostname giao không thể được giải quyết như addr ip động như sau:
$ docker build -t testimage .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM centos:6
---> a30bc9f3097e
Step 1 : ENV HOSTNAME myhost
---> Using cache
---> e73bf592389e
Step 2 : RUN ping myhost
---> Running in ca54c8eac073
ping: unknown host myhost
INFO[0000] The command [/bin/sh -c ping myhost] returned a non-zero code: 2
Làm thế nào tôi có thể sử dụng một số tên máy cụ thể được giải quyết như container động IP addr?
Cảm ơn! Đề xuất của bạn thực sự là một công việc xung quanh những gì tôi muốn. Tôi đã không nhận thấy rằng tôi có thể chỉnh sửa/etc/hosts nếu tôi không chỉ định tùy chọn -h, và có hiệu lực nếu tôi viết lệnh trong một bước RUN. Ngoài ra tôi sẽ xem xét sử dụng Packer sau khi dùng thử Dockerfile. – dempasong