文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 前言`
- docker学习笔记-未完成版本
- 一、docker安装
- 二、docker使用
- 1.docker的基本操作
- 2.docker的容器操作
- 3.docker的镜像和容器启停操作
- 4.docker镜像的保存与发布
- 5.运行镜像中的python文件
- 6.安装使用mysql
- 7.docker安装配置nginx+php+mysql
- 总结
前言` docker学习笔记-未完成版本
docker系统主要概念:docker、镜像、容器,仓库。
docker:docker系统的引擎,容器运行的平台。
镜像:包含了root系统和运行程序的文件系统,是静态。制作好的镜像可以打包下载到本地,通过U盘或网络转移到另外的电脑,通过docker加载镜像,实现发布。
容器:是镜像运行状态时的实体,可以由镜像创建、启动、停止、删除、暂停等。
仓库:代码控制中心,用来保存镜像,类似于GitHub。
容器可以增加、删除、修改里面的运行程序和文件,修改内容随着容器的销毁而失去,容器内文件更改后必须commi重新t生成镜像才可以永久保存修改的操作,所以尽量利用镜像来部署软件运行环境和不需要更新的软件,需要更新的软放在本地目录。
利用docker的镜像部署好软件运行环境,在启动容器时挂载本地目录到容器,在容器外利用docker exec运行容器内挂载目录里面的程序和更新交换文件。需要经常更新的文件和数据可以放在本地挂载目录中。
一、docker安装docker安装过程
二、docker使用 1.docker的基本操作1、查看本机存在的镜像
% docker images
2、查看本机正在运行的容器
% docker ps -a
3、拉取镜像
% docker pull 镜像名:版本2.docker的容器操作
1、容器生成镜像:docker commit
% docker commit -m="python" -a="x74" 容器id python:v0.1
2、拷贝本地文件到容器:docker cp
拷贝单个文件 % docker cp 源文件 容器id:/usr/src/myapp /usr/src/myapp:容器内存放文件的目的目录 拷贝目录下所有文件 % docker cp -a 源文件所在目录名 容器id:/usr/src/myapp 拷贝文件后docker commit生产新的镜像
3、镜像更改名字/标签:docker tag
% docker tag 860c279d2fec runoob/centos:dev docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。 % docker tag 镜像id 新名字 新名字:x74/aaa:v0.1
4、运行容器并挂载本地目录共享数据
% docker run --name python -itdv 需要挂载的本地目录绝对路径:/usr/src/myapp 镜像名或id /bin/bash
–name python:python为启动的容器命名(name)
-it:提供交互的伪终端
-d:后台运行。选择后台运行后可以不需要/bin/bash
-v:挂载目录,v后挂载目录,不能再有别的参数。
----用:区别连接本地和容器路径(本地目录绝对路径:容器内位置和目录)
/usr/src/myapp:挂载到容器内的路径
5、从容器外部执行容器内部的程序命令:docker exec
% docker exec -it 容器id或name /bin/bash -c 'cd /usr/src/docker && python xxx.py'
-c后面为容器内部执行的命令,&&连接符
进入/usr/src/docker目录后,python运行xxx.py 程序
1、创建镜像 :docker build
使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。 详情查询Dockerfile
2、删除镜像:docker rmi
% docker rmi 镜像名/id
3、镜像运行变为容器并进入容器
% docker run -it 镜像id /bin/bash 在容器内退出:exit
4、停止一个容器:docker stop
% docker stop <容器 ID>
5、启动一个容器:docker start
% docker start <容器 ID>
6、重新启动容器:docker restart
% docker restart <容器 ID>
7、删除一个容器:docker rm -f
% docker rm -f <容器 ID> 清理掉所有处于终止状态的容器。 % docker container prune
8、进入一个容器:docker exec
% docker exec -it 容器id /bin/bash 在容器内退出:exit
9、查看容器的ip地址:docker inspect
% docker inspect 容器ID或name4.docker镜像的保存与发布
1、容器保存生成镜像:docker commit
% docker commit -m="python" -a="gx74" 容器id x74/python:v0.1 命令解释:-m和-a参数可以不使用 % docker commit -m="提交描述信息" -a="作者" 容器id 自己起镜像名:版本
2、镜像打包保存到本地:docker save
方法1: % docker save 镜像id > /存储路径/xxx.tar 方法2: % docker save 镜像id 存储路径
3、从本地导入镜像:docker load
% docker load XXX.tar
4、
5.运行镜像中的python文件
1、在电脑终端中运行
% docker run -it image文件id python /usr/src/myapp/9981.py(文件在镜像中的存放路径) 容器里面的文件更改后,要先commit镜像,然后用新镜像启动容器,再run 镜像的id 执行命令 -it:运行伪终端和容器的程序交互,向程序输入内容和参数。如果py程序没有交互,可以不用-it
2、
6.安装使用mysql
不建议在decker里运行mysql:
----容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。
----MySQL 属于关系型数据库,对IO要求较高。当一台物理机跑多个时,IO就会累加,导致IO瓶颈,大大降低 MySQL 的读写性能。
1、docker安装mysql
% docker pull mysql
2、利用mysql镜像创建容器
% docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 x74/mysql:v0.1
参数说明:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
x74/mysql:v0.1:镜像名字或id
3、启动mysql容器的另一种方法,加载本地目录,把数据库文件保存到本地。
% docker run -d -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 x74/mysql:v0.1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
$PWD:当前目录
7.docker安装配置nginx+php+mysql分别拉取nginx和php的镜像
% docker pull nginx % docker pull php:fpm php选择带fpm的镜像
1、镜像nginx中的网站文件存储在 /usr/share/nginx/html目录下,如果挂载本地目录,把本地存放网站的目录挂载到/usr/share/nginx/html。纯html文件的网站可以不需要php服务器。
% docker run --name capcyweb -p9012:80 -itdv /Users/gu/Documents/vscode/www:/usr/share/nginx/html x74/nginx:v1.0
-p9012:80:将本机端口9012映射到80
/Users/gu/Documents/vscode/www:/usr/share/nginx/html:目录映射关系
2、启动nginx容器,挂载本地存放的conf.d配置文件,挂载本地网站文件
% docker run --name nginx -p9012:80 -itd -v $PWD/www/vicweb:/usr/share/nginx/html -v $PWD/nginx/conf.d:/etc/nginx/conf.d --link php:php x74/nginx:v0.1
3、本机conf.d目录下要有default.conf配置文件,修改root和fastcgi_pass项。
也可以修改镜像中的default.conf配置文件,不用挂载conf.d目录
location ~ .php$ {
root /var/www/html; # php容器内网站文件的存放目录
fastcgi_pass php:9000; # php容器的名字和映射的端口
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
4、启动php容器并挂载网站目录
% docker run -p9000:9000 -itd --name php -v $PWD/www/vicweb:/var/www/html x74/php:fpm
5、php连接mysql时,需要在php容器里面先安装mysqli插件,并commit重新生成镜像。
# docker-php-ext-install mysqli
6、用包含mysqli的镜像启动php容器,并link到mysql容器
% docker run -p9000:9000 -itd --name php -v $PWD/www/vicweb:/var/www/html --link mysql:mysql x74/php:v0.2总结
随着学习的进程会不断添加内容。



