前言
因為每個人的前置知識不一樣,所以本文不適合其他人作為學習參考。就是自己做個記錄,以防忘記。自己電腦一直用的docker環境,但平時也沒怎麼折騰,今天整理一下。
如何編譯一個映象?簡單的寫個hello.c檔案,編譯成可執行的二進位制檔案
#include <stdio.h>
int main()
{
printf("hello docker\n");
}
編譯可執行檔案
gcc -static hello.c -o hello
Dockrefile裡的內容
FROM scratch
ADD hello /
CMD ["/hello"]
編譯映象(注意後面有一個 .)
docker build -t euan/ubuntu-hello .
把容器提交成一個映象:docker commit 當前執行的容器名 新映象名:版本號
docker container ls -a
docker commit b65e103367bf ubuntu-vim
push 映象到自己的docker hub上執行
docker push test/ubuntu-hello:latest
發現沒有許可權
The push refers to repository [docker.io/test/ubuntu-hello]0a5c675bd2fb: Preparing
denied: requested access to the resource is denied
查了下原因發現映象名字要和自己的docker hub帳號名一樣
執行命令改名字
docker tag 7a07b8c2aa07 euan/ubuntu-hello:latest
再次push
docker push euan/ubuntu-hello
The push refers to repository [docker.io/euan/ubuntu-hello]
0a5c675bd2fb: Pushed
latest: digest: sha256:b65468652d4d858aa984ac523e35e3b4a8b0eca0e6b5b956b080f5c500b206b1 size: 527
ubuntu@VM-140-90-ubuntu:~/hello-docker$
二、搭建自己的docker hub
docker run -d -p 5000:5000 --restart always --name registry registry:2
推送映象到自己的私有倉
docker push 自己伺服器ip地址:5000/php-fpm-7.2
The push refers to repository [自己伺服器ip地址/php-fpm-7.2]
Get https://自己伺服器ip地址/v2/: Service Unavailable
互動式操作映象。對於很多操作,我們需要進入正在執行的容器裡進行一些操作。可以執行以下命令
docker run -it 2434bbb56338 /bin/bash 或
docker exec -it 2434bbb56338 bash 進入某個容器
刪除所有停止執行的容器
sudo docker rm $(sudo docker ps -a -q)
### 三、docker使用
1, 配置:docker的守護進行配置檔案 /etc/docker/daemon.json
新增如下內容:
{ "insecure-registries" : [ "自己伺服器ip地址:5000" ]}
因為docker映象會用到本地伺服器的映象庫,不支援https請求,所以需要進行以上配置
2. 配置映象包
編輯配置 .env
WORK_DIR= 程式碼目錄
MYSQL_DATA_DIR=~/data/mysql
REDIS_DATA_DIR=~/data/redis
MC_DATA_DIR=~/data/mc
NGINX_LOG_DIR=~/data/nginx/log
配置nginx openresty
服務解析執行docker-compose up -d
啟動docker服務繫結本地host,
127.0.0.1 test.com127.0.0.1
3 更新映象包
- 更新docker配置檔案
- 執行docker-compose build 重建docker容器
- 執行docker-compose up -d 啟動docker容器
4. 常用docker命令
- docker ps 檢視所有容器
- docker exec -it 76e79889f101 bash 進入某個容器
- docker restart 76e79889f101 重啟某個容器
- docker-compose restart 重啟所有容器
常見問題
Connection failed: SQLSTATE[HY000] [2002] Connection refused
host 127.0.0.1改成localhost
本作品採用《CC 協議》,轉載必須註明作者和本文連結