1.在 Linux 系統中安裝 Docker(基於Debian,mac)html
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo systemctl enable docker
sudo systemctl start docker複製代碼
這些命令度娘一大堆,我就不說了,就說說我安裝過程當中碰到的問題吧,node
問題一:python
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" 這裏碰到報錯: linux
提示要安裝python-software-properties外還須要software-properties-common nginx
根據度娘解答輸入: sudo apt-get install software-properties-common git
問題二:可是又報錯了:warning: Falling back to the standard locale ("C") github
解決: sudo vim /root/.bashrc web
在尾部加入如下三條定義: redis
export LANGUAGE="en_US.UTF-8" docker
export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C
編輯完成以後執行: source /root/.bashrc ——>使用環境即時生效
到目前爲止,你能夠輸入 docker version 或者 docker info 看是否安裝成功
2. 安裝完docker 以後咱們開始學一些指令,docker 的指令仍是不少,我就列舉幾個比較可能會用到的吧,鏡像倉庫地址是:hub.docker.com/ 和npm 是同樣的,你能夠從中找出你須要的鏡像
查看鏡像: docker images
拉取鏡像: docker pull nginx (若是後面沒有加tag 就默認拉取latest)
搜索鏡像: docker search **
管理鏡像(獲取更加詳細的信息): docker inspect redis:3.2
刪除鏡像: docker rmi ubuntu:latest **
建立容器: docker create nginx:1.12 / docker create --name nginx nginx:1.12
啓動容器: sudo docker start nginx
建立並啓動容器: docker run --name nginx -d nginx:1.12(-d 表示Docker 在啓動後將程序與控制檯分離,使其進入「後臺」運行)
管理容器(查看):
docker ps (-a 表示查看因此狀態的容器,若是不加表示只查看處於運行中的容器)
中止和刪除容器:
(在運行中的容器是不能被刪除的, 因此必須先stop)
eg : docker stop nginx 以後 docker rm nginx
進入容器:(若是須要進入容器進行查看或者操做)
docker exec -it nginx bash (docker exec 命令來啓動 sh 或 bash,並經過它們實現對容器內的
虛擬環境的控制)
不依賴於容器獨立建立數據卷
docker volume create appdata
docker volume ls
刪除數據卷
docker volume rm appdata
docker rm -v webapp(經過增長 -v 選項來刪除容器關聯的數據卷)
docker volume prune -f(刪除那些沒有被容器引用的數據卷
複製代碼
3.文件的掛載是學習docker 比較重要的一部分,它有三種掛載方式:(Bind Mount、Volume 和 Tmpfs Mount)
1.普通掛載: docker run -d --name nginx -v /webapp/html:/usr/share/nginx/html nginx:1.12
(-volume <host-path>:<container-path>)(這裏使用絕對路徑不能使用相對路徑)
2. 啓動鏡像
3. 數據卷: docker run -d --name webapp -v /webapp/storage webapp:latest(-v <name>:<container-path>)
或者:
docker run -d --name webapp -v appdata:/webapp/storage:ro webapp:latest(:ro 表示readonly)複製代碼
4.編寫 Dockerfile 和 使用 Docker Compose 管理容器
Dockerfile eg:
FROM node
VOLUME /usr/src/app
WORKDIR /usr/src/app
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
Docker Compose 若是每次都使用命令顯得有點繁瑣,咱們把它寫成腳本,這樣每次只要執行腳本就行
eg: 在bin 文件下compose文件
#!/bin/bash
root=$(cd `dirname $0`; dirname `pwd`)
docker-compose -p website -f ${root}/compose/docker-compose.yml "$@"
這樣每次執行只要./bin/compose up -d
docker-compose.yml 文件:
version: '3'
#
# 生成環境docker-compose配置文件
#run:
# docker-compose build
# docker-compose up -d
#
services:
node:
build: ../dockers/node/
volumes:
- .:/usr/src/app
nginx:
image: nginx
volumes:
- ../build/:/usr/share/nginx/html/
- ../nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- node
ports:
- 3030:80
其餘文件的配置詳見: https://github.com/catherine201/ant-ts.git
裏面仍是比較細緻的;複製代碼
refer link: https://github.com/catherine201/ant-ts.git
問題三:
./bin/compose up -d -bash: ./bin/compose: Permission denied
出現Permission denied 是由於沒有執行權限,經過下面命令進行添加;
chmod +x ./bin/compose 添加執行權限
感謝閱讀,謝謝~~