制作docker之前,將源指向到阿里云
## 備份原鏡像軟件源
mv /etc/apt/sources.list /etc/apt/sources.list.bak
## 更改鏡像為阿里鏡像源
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe" >> /etc/apt/sources.list &&
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe" >> /etc/apt/sources.list
1、如果容器無法停止,先執行:aa-remove-unknown命令,再執行docker container stop imageId 命令
2、ADD拷貝目錄失敗:在拷貝文件的時候docker是用“/”來區分目錄和文件的,也就是“/root”是被當做根目錄文件root,“/root/”才被識別為目錄
build鏡像命令:
docker build -t bbbmarkservices:v2.0.6 .
3、進入正在運行的容器:sudo docker exec -it 65a2cd69a975 /bin/bash,其中784081ffe273為容器的實例ID(使用命令docker ps獲取)
4、停止容器:docker container stop 22e5f34de1f3,其中22e5f34de1f3為容器的ID
5、運行一個容器:docker run -it bibibetter:v2 /bin/bash
(mongodb容器:-d,后臺運行容器,并返回容器ID)
docker run -d -e AUTHID="AUTHID" -e MGCOONSTR="mongodb:\/\/localhost:27017" -p 29019:27017 -p 1010:80 -p 1020:9090 -p 1030:22 -v mongo_configdb:/data/configdb -v mongo_db:/data/db -v /root/docker/bbbmarkservices/bgpdir:/www/bbbmarkservices/bgpdir --name bbbmarkservices registry.cn-shenzhen.aliyuncs.com/bibibetter/markservices:latest
6、退出鏡像:exit
退出鏡像后一般要執行docker ps -l,查看是否還存在后臺進程,如果有,執行docker rm ×××,×××為前面命令顯示的鏡像ID
7、創建一個容器:
(1)在應用程序目錄下創建文件Dockerfile,寫入docker配置信息
(2)建立docker鏡像(注意命令最后有個點符號)docker build -t bibibetter:v6 .
8、中文支持(>>為追加操作)
echo "export LANG="zh_CN.UTF-8"" >> /etc/profile
source /etc/profile
9、制作離線鏡像文件
(1)運行鏡像
(2)安裝必要的軟件或刪除一些軟件
(3)測試鏡像中的軟件
(4)commit(此時不要停止運行中的鏡像):docker commit 4cedf68a2a7c bbbembedder:v1.4.2,其中4cedf68a2a7c 為運行中的鏡像實例ID(使用命令docker ps獲取),bbbembedder為REPOSITORY,v1.4.2為TAG
(5)save: docker save bbbmarkservices:v2.0.5 |gzip > bbbmarkservices_v2.0.5_images.tar.gz
10、導入鏡像
將鏡像文件上傳到服務器后,執行命令:docker load < /root/bibibetterv6.0_images.tar.gz docker load < bbbmarkservices_v2.0.2_images.tar.gz
11、刪除鏡像出錯
docker rmi 5e90946e8da6
Error response from daemon: conflict: unable to delete 5e90946e8da6 (must be forced) - image is being used by stopped container 4e7c110be289
解決辦法:執行以下命令刪除引用的鏡像:
docker rm 4e7c110be289
再執行docker rmi 5e90946e8da6
或者加上-f參數強行刪除:docker rmi -f 5e90946e8da6
12、發布端口
-p <宿主端口>:<容器端口>
例如:docker run -it -p 20180:80 -p 20181:8080 -p 20182:8976 --name containerName image:tag
13、顯示當前容器的所有狀態
docker ps -l
apt-get -y install openssh-server
ssh -l root 192.168.108.60 -p 1030
14、無法刪除鏡像
Error response from daemon: conflict: unable to delete 6ec9a5a0fc9f (cannot be forced) - image has dependent child images# 6ec9a5a0fc9f為鏡像ID
列出依賴:
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=6ec9a5a0fc9f)
針對列表中的執行:
docker rmi **** #其中***為列表中的sha256值
15、docker啟動方式
(1)docker run -it -p 3030:3030 --name mykafka landoop/fast-data-dev
這種方式,可以通過使用CTRL+C停止它(但沒有刪除),然后使用以下命令啟動:
docker start mykafka
(2)docker run -d -p 3030:3030 --name mykafka landoop/fast-data-dev
這種方式在后臺啟動,這種情況下只有用stop來停止它
(3)docker run --rm -it -v /path/to/local/directory:/tmp landoop/fast-data-dev
這種方式可以跨container來保持數據:將kafka和zookeeper文件保持好。文件夾/path/to/local/directory必須對kafka和zookeeper可寫(chmod 0777),以用戶nobody運行
brokers將數據保存在/tmp/kafka-logs,zookeeper將數據保存在/tmp/zookeeper
16、升級glibc
ln -s /opt/glibc-2.29/lib/libc-2.29.so.6 /lib/x86_64-linux-gnu/libm.so.6
- 重要更新說明
- linechain發布
- linechain新版設計
- 引言一
- 引言二
- 引言三
- vs-code設置及開發環境設置
- BoltDB數據庫應用
- 關于Go語言、VS-code的一些Tips
- 區塊鏈的架構
- 網絡通信與區塊鏈
- 單元測試
- 比特幣腳本語言
- 關于區塊鏈的一些概念
- 區塊鏈組件
- 區塊鏈第一版:基本原型
- 區塊鏈第二版:增加工作量證明
- 區塊鏈第三版:持久化
- 區塊鏈第四版:交易
- 區塊鏈第五版:實現錢包
- 區塊鏈第六版:實現UTXO集
- 區塊鏈第七版:網絡
- 階段小結
- 區塊鏈第八版:P2P
- P2P網絡架構
- 區塊鏈網絡層
- P2P區塊鏈最簡體驗
- libp2p建立P2P網絡的關鍵概念
- 區塊鏈結構層設計與實現
- 用戶交互層設計與實現
- 網絡層設計與實現
- 建立節點發現機制
- 向區塊鏈網絡請求區塊信息
- 向區塊鏈網絡發布消息
- 運行區塊鏈
- LineChain
- 系統運行流程
- Multihash
- 區塊鏈網絡的節點發現機制深入探討
- DHT
- Bootstrap
- 連接到所有引導節點
- Advertise
- 搜索其它peers
- 連接到搜到的其它peers
- 區塊鏈網絡的消息訂發布-訂閱機制深入探討
- LineChain:適用于智能合約編程的腳本語言支持
- LineChain:解決分叉問題
- LineChain:多重簽名
- libp2p升級到v0.22版本
- 以太坊基礎
- 重溫以太坊的樹結構
- 世界狀態樹
- (智能合約)賬戶存儲樹
- 交易樹
- 交易收據樹
- 小結
- 以太坊的存儲結構
- 以太坊狀態數據庫
- MPT
- 以太坊POW共識算法
- 智能合約存儲
- Polygon Edge
- block結構
- transaction數據結構
- 數據結構小結
- 關于本區塊鏈的一些說明
- UML工具-PlantUML
- libp2p介紹
- JSON-RPC
- docker制作:啟動多個應用系統
- Dockerfile
- docker-entrypoint.sh
- supervisord.conf
- docker run
- nginx.conf
- docker基礎操作整理
- jupyter計算交互環境
- git技巧一
- git技巧二
- 使用github項目的最佳實踐
- windows下package管理工具