基本操作
安裝docker
不解釋,不說明
配置Docker 加速器
https://7r1xoz0i.mirror.aliyuncs.com
ubuntu 下可以這樣配置:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://7r1xoz0i.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
運(yùn)行一個docker應(yīng)用
docker run ubuntu:15.10 /bin/echo "hello Docker"
常用命令
docker images
docker ps
docker ps -a
刪除一個容器
docker rm a4710df7be21
docker rm 容器ID||容器名稱
運(yùn)行交互式的容器
docker run -it ubuntu:15.10 /bin/bash
后臺運(yùn)行與停止容器
docker run -d ubuntu:15.10
docker stop 容器ID||容器名稱
查看docker日志
docker logs 容器ID||容器名稱
docker logs -f 容器ID
與正在運(yùn)行的容器交互
docker exec -it 容器ID||容器名稱 /bin/bash
docker exec -it tomcat /bin/bash
docker 幫助和命令
docker COMMAND --help
docker 容器運(yùn)行一個web應(yīng)用程序
docker run -d -P training/webapp python app.py
-d 在后臺運(yùn)行
-P 容器應(yīng)用的端口映射到宿主機(jī)的隨機(jī)端口
綁定指定映射端口
docker run -d -p 5000:5000 training/webapp python app.py
- 左邊5000端口代表宿主機(jī)
- 右邊5000端口代表容器
查看容器正在運(yùn)行的進(jìn)程
docker top 容器ID||容器名稱
查看容器狀態(tài)
docker inspect 容器ID||容器名稱
- Return low-level information on Docker objects
- 返回docker對象的低級信息
批量移除刪除容器
docker rm 容器ID 容器ID
- 多個容器ID之間加空格
鏡像管理
獲取鏡像
docker pull tomcat
- 自動獲tag為latest的鏡像
查找鏡像
docker search tomcat
更新鏡像
-
從已創(chuàng)建的容器中更新鏡像,并提交這個鏡像僧凤。
docker commit -m="has update" -a="huangsz" d5f01302b56c huangsz/ubuntu:v2 -m 鏡像說明 -a 作者 d5f01302b56c 容器ID
-
使用Dockerfile指令來創(chuàng)建一個新的鏡像揉忘。
Dockerfile是命令組合钉嘹∥食可以使用在terminal中的任何命令罕邀。Docker讀取Dockerfile中的指令自動生成鏡像乏苦。
docker build -f /path/to/Dockerfile
Dockerfile文件說明
- 第一條指令必須是FROM
-
開通的是注釋
- Dockerfile只能有一個CMD命令
cd /usr/local/docker
mkdir myubuntu
cd myubuntu
vim Dockerfile
----------Start Dockerfile文件內(nèi)容----------
FROM ubuntu:15.10
MAINTAINER john
RUN /bin/bash -c 'echo "Hello World"'
COPY test.txt /home #左邊宿主機(jī)文件目錄 右邊容器目錄
WORKDIR /home
CMD ["/bin/echo","this is test"]
EXPOSE 80
EXPOSE 8080
----------End Dockerfile文件內(nèi)容----------
Docker build huangsz/myubuntu -f ./Dockfile
Dockfile常用命令
FROM - 鏡像來源株扛,基于哪一個鏡像修改
MAINTAINER - 作者
RUN - 執(zhí)行命令
COPY - 宿主機(jī)的資源文件復(fù)制到容器中
WORKDIR - 指定工作目錄(類似于cd)
EXPOSE - 暴露端口
移除鏡像
docker rmi 鏡像ID
設(shè)置鏡像標(biāo)簽
docker tag 鏡像ID huangsz/ubuntu:v2
Docker 實例教程
運(yùn)行容器
docker run --name tomcat -p 8080:8080 -d tomcat
--name 指定容器的名字
-p 端口映射
docker exec -it tomcat /bin/bash
進(jìn)入容器交互
安裝mysql
docker pull mysql
運(yùn)行mysql
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456
-d mysql
- -v 掛載目錄尤筐, 冒號左邊是宿主機(jī)右邊是容器
- -e 設(shè)置環(huán)境變量 Set environment variables
- -d 后臺運(yùn)行
部署項目
創(chuàng)建一個Dockerfile
FROM tomcat
MAINTAINER john
ADD app.war /usr/local/tomcat/webapps/app.war
數(shù)據(jù)卷
數(shù)據(jù)卷的主要作用
- 繞過拷貝寫,本地磁盤IO性能
- 有些文件不需要在
dcoker commit
中打包進(jìn)鏡像文件 - 在多個容器間共享目錄
- 宿主與容器間共享目錄
- 宿主與容器間共享文件
創(chuàng)建數(shù)據(jù)卷
有兩種方式添加數(shù)據(jù)卷
- 在Dockerfile中指定VOLUME后的目錄洞就,如:
VOLUME /var/lib/test
- docker run 命令添加-v選項
docker run --name tomcat -p 8080:8080 -v /share/webapps:/usr/local/tomcat/webapps -d tomcat
- /share/webapps 是共享數(shù)據(jù)卷
數(shù)據(jù)備份
給mysql的docker增加共享數(shù)據(jù)卷盆繁,定期備份即可。
Docker Compose
簡介
使用 Docker Compose 可以輕松旬蟋、高效的管理容器油昂,它是一個用于定義和運(yùn)行多容器 Docker 的應(yīng)用程序工具。主要用于簡化docker的操作倾贰。
安裝
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
如果連接比較慢冕碟,可以換成國內(nèi)源:
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
安裝完畢-查看是否安裝成功
docker-compose -v
使用
創(chuàng)建一個 docker-compose.yml
配置文件。注意yml是用空格縮進(jìn)的匆浙,不要用Tab安寺。
version: '3'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
webapp:
restart: always
image: training/webapp
container_name: webapp
ports:
- 5000:5000
mysql:
restart: always
image: mysql
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- mysql-data:/var/lib/mysql
volumes:
- /share/webapps:/tomcat/webapps
environment:
TZ: Asia/Shanghai
參數(shù)說明:
- version 指定腳本語法解釋器版本
- services 需要啟動的服務(wù)列表(名字隨便,不要重復(fù))
- restart 總是自動重啟(物理服務(wù)器重啟-容器重啟)
- image 鏡像文件
- container_name 容器名稱
- ports 開放端口
啟動:docker-compose up
刪除:docker-compose down
常用命令
docker-compose up -d nginx 構(gòu)建建啟動nignx容器
docker-compose exec nginx bash 登錄到nginx容器中
docker-compose down 刪除所有nginx容器,鏡像
docker-compose ps 顯示所有容器
docker-compose restart nginx 重新啟動nginx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不啟動關(guān)聯(lián)容器首尼,并容器執(zhí)行php -v 執(zhí)行完成后刪除容器
docker-compose build nginx 構(gòu)建鏡像
docker-compose build --no-cache nginx 不帶緩存的構(gòu)建挑庶。
docker-compose logs nginx 查看nginx的日志
docker-compose logs -f nginx 查看nginx的實時日志
docker-compose config -q 驗證(docker-compose.yml)文件配置,當(dāng)配置正確時软能,不輸出任何內(nèi)容迎捺,當(dāng)文件配置錯誤,輸出錯誤信息埋嵌。
docker-compose events --json nginx 以json的形式輸出nginx的docker日志
docker-compose pause nginx 暫停nignx容器
docker-compose unpause nginx 恢復(fù)ningx容器
docker-compose rm nginx 刪除容器(刪除前必須關(guān)閉容器)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 啟動nignx容器
附錄
阿里云ubuntu數(shù)據(jù)源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
阿里云ubuntu數(shù)據(jù)源
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
如果沒有安裝vi或vim或者執(zhí)行:
cp /etc/apt/sources.list /etc/apt/sources.list.bak;
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" > /etc/apt/sources.list