顯示具有 docker 標籤的文章。 顯示所有文章
顯示具有 docker 標籤的文章。 顯示所有文章

2024年5月2日

修改 docker 自動啟動狀態

一早處理一台硬碟塞滿的機器、因為有重啟就被沒有自動啟動的 docker 給表了

- 先確認一下目前自動啟動狀態
$ sudo docker inspect <容器名稱或ID> | grep RestartPolicy -A 3
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },

 - 修改為永遠啟動 
$ sudo docker update --restart=always <容器名稱或ID> 

 - 確認 
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },

2023年11月21日

[Linux]docker run出現 Error response from daemon: No command specified.

狀況是從舊機器匯出 container 後複製到另外一台機器匯入後出現的錯誤訊息 匯出
sudo docker export 30dda4e74a41 > container.tar
匯入
sudo docker import container.tar TAG
執行
sudo docker run --name test -p 80:80 -d test
然後就出現
docker: Error response from daemon: No command specified.
See 'docker run --help'.
查了一下要去原有機器查看當初執行時所跑得 command ,然後加在最後面
sudo docker run --name test -p 80:80 -d test /.docker_init.sh
如果是備份 image 的話就沒有這個問題了
sudo docker save -o "test.tar" 名字:TAG
還原
sudo docker load -i "test.tar"

2018年12月22日

在 centos 6 上安裝 docker-io

如果在 centos 6 下直接 yum install docker 的話、是可以安裝 docker 的、但是一執行就會出現錯誤訊息
Segmentation Fault or Critical Error encountered. Dumping core and aborting

所以要改成安裝 docker-io
先安裝 epel-realease
#rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

可以的話先更新一次系統並且重開機
#yum update -y

安裝 docker-io
#yum install -y docker-io

啟動 docker
#service docker start

也可以設成開機自動啟動
#chkconfig docker on

2018年12月18日

docker Apache Log Rotate 設定

因為保存需要、所以用 -v 把 apache 的 log 保存在主機空間上
舊的 logrotate 設定就不適用於 docker 版本的 apache 了

舊設定
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}


這邊改成
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
docker container kill apache2 -s USR1
endscript
}

2018年12月15日

docker 在區域網路內建立私有倉庫

直接用docker版建立
#docker run -d --name registry -p 5000:5000 -v /home/docker/registry:/var/lib/registry registry
把 image 存放的地方另外放到主機的上、不然如果刪除的話、整包已經上傳的就不見了

假設私倉主機 IP 是 192.168.1.1
把要 push 的 image 先打上 tag
#docker tag mysql-5.1.73 192.168.1.1:5000/mysql-5.1.73

這時候如果直接 push 的話、就會出現錯誤
Get https://192.168.1.1:5000/v1/_ping: http: server gave HTTP response to HTTPS client

所以改設定、把這台主機改成不使用 https
#echo '{ "insecure-registries":["192.168.1.1:5000"] }' > /etc/docker/daemon.json
#systemctl restart docker


這樣就可以把 image push 到區網內的私倉了
#docker push 192.168.1.1:5000/mysql-5.1.73

2018年12月14日

利用 dockerfile 建立自己的 image

因為用 export 或是 save 移到別台都會出現問題,又不方便每次都上 docker hub 拉,只好自己在每台上面建 image

1.為避免每次都要從外網拉檔案、先手動把mysql拉下來放到內網某台有提供http服務的機器上
2.進入容器內、把 entrypoint.sh 複製出來成 docker-entrypoint.sh
3.建立 Dockerfile
FROM ubuntu:trusty

RUN groupadd -r mysql && useradd -r -g mysql mysql

RUN apt-get update && \
apt-get install -y curl binutils

RUN gpg --keyserver pgp.mit.edu --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5

RUN locale-gen en_US.UTF-8 &&\
update-locale

ENV LANG en_US.UTF-8

ENV LANGUAGE en_US:en

ENV LC_ALL en_US.UTF-8

RUN curl -SL "http://192.168.1.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz" -o mysql.tar.gz && \
curl -SL "http://192.168.1.1/mysql-5.1.73-linux-x86_64-glibc23.tar.gz.asc" -o mysql.tar.gz.asc && \
gpg --verify mysql.tar.gz.asc && \
mkdir /usr/local/mysql && \
tar -xzf mysql.tar.gz -C /usr/local/mysql --strip-components=1 && \
rm mysql.tar.gz* && \
rm -rf /usr/local/mysql/mysql-test /usr/local/mysql/sql-bench && \
rm -rf /usr/local/mysql/bin/*-debug /usr/local/mysql/bin/*_embedded && \
find /usr/local/mysql -type f -name "*.a" -delete && \
{ find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; } && \
apt-get purge -y --auto-remove binutils && \
rm -rf /var/lib/apt/lists/*

ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts

WORKDIR /usr/local/mysql

VOLUME /var/lib/mysql

COPY docker-entrypoint.sh /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 3306

CMD ["mysqld", "--datadir=/var/lib/mysql", "--user=mysql"]


4.#docker build -t="mysql-5.1.73" .

使用 docker 跑 mysql-5.1.73

來源 https://hub.docker.com/r/vsamov/mysql-5.1.73

直接拉下來使用
#docker pull vsamov/mysql-5.1.73

列出本機所有 image
#docker image ls

新建並啟動 && 使用本來的設定檔和同步時區
#docker run --name mysql \
-p 3306:3306 \
-v /var/lib/mysql:/var/lib/mysql \
-v /etc/my.cnf:/etc/my.cnf \
-v /var/log/mysql_slow.log:/var/log/mysql_slow.log \
-e "TZ=Asia/Taipei" \
-d vsamov/mysql-5.1.73:latest


停止容器
#docker stop mysql

列出所有容器
#docker ps -a

移除容器
#docker rm mysql