Dockerfile
※記載途中
httpd
# vi Dockerfile --- FROM docker.io/centos:centos7 MAINTAINER <name> <<メルアド>> RUN yum -y install httpd RUN sed -i -e 's/\#ServerName www.example.com:80/ServerName <アドレス>/g' /etc/httpd/conf/httpd.conf CMD /usr/sbin/httpd -k start -D FOREGROUND ---
image作成は
# docker build -t <イメージ名>:<タグ> <Dockerfileのパス>
コンテナ起動は
# docker run -i -t -p <ホスト側ポート>:<コンテナ内ポート> -d --name <コンテナ名> <イメージ名:タグ>
※Dockerfile内のCMD節でコマンドを指定する場合は、最後のコマンドを省略する。
※もし省略しない場合は、Dockerfile内のCMDより優先されるっぽい。
動作確認は
# curl http://127.0.0.1:50050/
mysql
docker run -i -t -p 53306:3306 -d --name mysqldocker -e MYSQL_ROOT_PASSWORD=mysql centos7/mysql mysql
mysql -h localhost:53306 -uroot -p
→エラーERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
が出て落ちている。
→この場合は、コンテナ内で
touch /var/lib/mysql/mysql.sock
して
/etc/my.cnfに
[client]
socket=/var/lib/mysql/mysql.sock
を追記する。
それから
docker run --privileged -i -t -p 53306:3306 -d --name mysqldocker -e MYSQL_ROOT_PASSWORD=mysql centos7/mysql /sbin/init
attachするには
nsenter -t $(sudo docker inspect --format '{{.State.Pid}}' mysqldocker) -m -u -i -n -p /bin/sh
メモ
mysql -u <username> -p<password> -h <inspectで調べたmysqlコンテナのIPアドレス>