因爲apt官方庫裏的docker版本可能比較舊,因此先卸載可能存在的舊版本 sudo apt-get remove docker docker-engine docker-ce docker.io 更新apt包索引 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common 添加Docker官方的GPG密鑰 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update 安裝最新版本的Docker CE sudo apt-get install -y docker-ce 驗證 sudo service docker status sudo docker run hello-world
也叫作Docker鏡像,鏡像通常是隻讀模版,用戶不能夠直接對其進行寫入操做。使用鏡像能夠很輕鬆地建立容器。 鏡像目的也就是更好的保證數據的安全。html
也叫作Docker容器,容器與容器之間互相隔離、互不干擾,容器能夠進行被開始、啓動、中止、刪除等操做。linux
開發者能夠快速地把本身的應用打包到容器中進行發佈。nginx
也叫作Docker倉庫,主要是用來下載和上傳鏡像的,倉庫分爲公有倉庫和私有倉庫。git
看吧!web
docker exec -it 容器ID/名字 /bin/bashredis
這時 top 命令看到的只有當前容器運行的程序;進入容器後,能夠進行操做等。docker
exit 退出ubuntu
運行中:docker ps安全
全部:docker ps -abash
docker images
docker rm ID
刪除全部容器
docker rm $(docker ps -a -q)
須要先刪除容器
docker rmi (-f) ID
docker pull 用戶名/鏡像名
docker run -d \ --name nginx_container \ -p 80:80 \ -v /data:/data \ --restart=always \ nginx
中止全部容器
docker stop $(docker ps -a -q)
首先編寫Dockerfile文件,而後用docker build來構建鏡像
docker build -t my_own_nginx:v1 .
docker tag my_own_nginx:v1 nginx:socv1
docker logs -f container_id
docker image rm -f $(docker image ls -q)
pip3 install docker-compose docker-compose --version
-f
參數。 image是指定服務的鏡像名稱或鏡像ID。若是鏡像在本地不存在,Compose將會嘗試拉取鏡像。
version: '3.7' services: icp: image: harbor.socmap.org/bs-icp/icp:v0.0.3
構建鏡像,指定一個Dockerfile文件路徑
version: '3.7' services: icp: build: context: ./services/icp dockerfile: Dockerfile
映射一個目錄。格式:宿主機:容器內
例如:容器運行,須要存取驗證碼圖片,映射容器路徑/usr/src/app/project/captcha
到宿主機/home/workspace/files/captcha
,容器內,凡是使用前者保存的圖片都會存儲到後者目錄。
version: '3.7' services: icp: volumes: - '/home/workspace/files/captcha:/usr/src/app/project/captcha'
用於映射端口。
version: '3.7' services: icp: ports: - 5033:5000
暴露端口給link到當前容器的容器。不會將端口暴露給宿主機。
例如:將端口8887暴露給link到本容器的容器
version: '3.7' services: icp: expose: - 8887
一個專門存放變量的文件。若是有變量名稱與environment指令衝突,則之後者爲準。
version: '3.7' services: icp: env_file: - name.env
添加環境變量。
version: '3.7' services: icp: environment: - FLASK_ENV=development
重啓容器。默認爲 no
version: '3.7' services: icp: restart: always
配置網段。
version: '3.7' services: icp: networks: - defnet networks: defnet: ipam: driver: default config: - subnet: "172.68.0.0/16"
解決容器服務間相互依賴、啓動順序的問題。
例如:下面容器會先啓動 redis 和 db 兩個服務,再啓動 icp 服務
version: '3.7' services: icp: depends_on: - db - redis redis: image: redis db: image: postgres
解決的是容器間鏈接問題。容器間能夠經過名稱相互訪問
例如:web 容器須要使用到 db 容器的 postgres 服務,web 容器以別名 database 爲 hostname訪問 db 服務
version: '3.7' services: web: links: - db:database db: image: postgres
覆蓋容器啓動後默認執行的命令。
version: '3.7' services: celery: command: celery -A app.celer.base worker -l info
-d
後臺啓動-f
指定 docker-compose 文件--build
重構鏡像docker-compose up
docker-compose up -d
docker-compose -f docker-compose-dev.yml up -d –build
docker-compose -f docker-compose-deploy.yml pull
1,登陸
docker login -u username -p password
2, 本地構建鏡像,鏡像名要與dockerhub倉庫名相同,默認使用.目錄
下的Dockerfile文件
docker build -t username/blog:v0.0.1 .
3, 推送到dockerhub
docker push username/blog:v0.0.1