The simple way to run Docker-in-Docker for CI:https://tutorials.releaseworksacademy.com/learn/the-simple-way-to-run-docker-in-docker-for-ci
需要將宿主機的docker環境變量映射
-v /var/run/docker.sock:/var/run/docker.sock \
參數多了使用docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
docker-compose -v
cd /home
vi docker-compose.yml
version: '3' services: jeknins: container_name: 'jenkins_pen' image: jenkins/jenkins:lts restart: always user: root ports: - "11005:8080" - "5000:5000" volumes: - /home/jenkins/data:/var/jenkins_home - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock
//若docker-compose.yml user 權限不夠會有報錯
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
https://www.cnblogs.com/Uni-Hoang/p/12901055.html
https://www.cnblogs.com/Uni-Hoang/p/12901055.html
若使用docker-compose.yml也要注意
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
//執行docker-compose.yml配置文件
# 刪除上次構建的容器
docker-compose down
# 重新構建鏡像 --force-rm 刪除構建過程中的臨時容器。
docker-compose build --force-rm
# 運行容器
docker-compose up -d
# docker-compose.yml version: "3" services: # 服務 node: # node 服務 build: . # Dockerfile 的目錄,用於構建鏡像 container_name: node-server-1 # 容器名稱 ports: # 暴露的端口 - "3000:3000" restart: always # 自動重啟 environment: - NODE_ENV=production networks: # 加入網絡 - "my-network" command: npm run start # 覆蓋容器啟動后默認執行的命令 dockerfile定義了workdir nginx: image: nginx:latest 指定 nginx 鏡像 ports: # 將本機的 8080 端口映射到容器的80端口 - "8080:80" container_name: nginx-node restart: always volumes: # 映射本機 F:/nginx.conf 文件到 容器的 /etc/nginx/nginx.conf:ro 文件 - "F:/nginx.conf:/etc/nginx/nginx.conf:ro" networks: - "my-network" links: # 設置 node 服務別名,其實是設置/etc/hosts的域名解析 - "node" depends_on: # 指定依賴於哪個服務 - node networks: # 網絡 my-network: # 網絡名稱 driver: bridge
2.docker容器的內數據備份
//docker cp docker cp containerId:/var/jenkins_home /home/jenkins/data
#1.從宿主機向容器中復制文件
[root@localhost data]# sudo docker cp aa.txt ssh001:/data
把當前目錄下的aa.txt復制到容器名稱為【ssh001】的data目錄下
//官方備份volumes https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes
docker run --rm --volumes-from jenkins_pen -v /temp/backup:/backup ubuntu tar cvf /backup/backup.tar /var/jenkins_home