Docker基础分享
Docker简介
Docker 提供轻量的虚拟化,你能够从 Docker 获得一个额外抽象层,你能够在单台机器上运行多个 Docker 微容器,而每个微容器里都有一个微服务戒独立应用, 例如你可以将 Tomcat 运行在一个 Docker,而 MySQL 运行在另外一个Docker,两者可以运行在同一个服务器,或多个服务器上。未来可能每个应用都要Docker化。
1.ubuntu安装docker
见参考文章:
2.获取镜像
-
通过docker命令搜索镜像
docker search centos -
根据docker官方网站,查找镜像
拉取镜像命令:
docker pull xxx
3.docker拉取镜像并启动
以mysql5.7为例
先拉取 mysql 的镜像,可以在 docker 的镜像仓库找到不同TAG标签的版本 ,docker官方mysql镜像:
hub.docker.com/_/mysql?tab…
我这里选择 mysql:5.7标签
具体步骤:
- 执行拉取镜像命令:
docker pull mysql:5.7
- 创建本地mysql映射目录:
mkdir -p mysql/conf mysql/data mysql/logs
- 创建容器
docker run -p 3306:3306 --name mysql5.7 -v /home/wxm/mysql/conf:/etc/mysql/conf.d -v /home/wxm/mysql/logs:/logs -v /home/wxm/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
说明:
--name 重命名
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v /home/wxm/mysql/conf:/etc/mysql/conf.d:将主机/home/wxm/mysql/conf挂载到容器的/etc/mysql/conf.d
-v home/wxm/mysql/logs:/logs:将主机home/wxm/mysql/logs目录挂载到容器的 /logs
-v /home/wxm/mysql/data:/var/lib/mysql :将主机/home/wxm/mysql/data目录挂载到容器的 /var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码
-d 挂后台运行
- 启动完成后,查看容器运行状态
docker ps
进入到/home/wxm/mysql/conf,可查看docker数据已同步至本机目录
4.docker自制镜像,并运行容器
- Dockerfile简介
Dockerfile 是用来构建 Docker 镜像的构建文件,是由一系列命令和参数构成的脚本。
简单来说,Dockerfile 就是把我们安装环境的每个步骤和指令,放到一个文件,最后一键执行,最后做成一个你想要的环境。
-
Docker 构建三步曲:
- 编写dockerfile文件
- docker build 构建image镜像文件
- docker run运行容器
-
Dockerfile相关指令
Dockerfile 是一个包含创建镜像所有命令的文本文件,通过 docker build命令,可以根据Dockerfile的内容构建镜像
Dockerfile 有以下指令选项:
FROM 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 容器构建时需要运行的命令
CMD 指定一个容器启动时要运行的命令。dockerfile中可以有多个CMD 指令,但只有最后一个生效,CMD 会被docker run后的参数替换。
EXPOSE 前容器对外暴露的端口号
ENV 用来在构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件拷贝到镜像里面,并且ADD命令会自动处理URL和解压tar压缩包
COPY COPY类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,会自动处理URL和解压tar压缩包。
ENTRYPOINT 指定一个容器启动时要运行的命令。ENTRYPOIT的目的和CMD一样,都是在指定容器启动程序及参数。
VOLUME 容器数据卷,用于数据保存和持续化工作
USER 指定运行容器时的用户名或UID,后续的RUN也会使用指定用户
WORKDIR 指定在容器创建后,终端默认登录进来的工作目录,一个落脚点
ONBUILD 当构建一个被继承的 Dockerfile 时运行命令,父镜像在被子继承后,父镜像的onbuild被触发。
具体自制镜像并运行容器的步骤如下:
- 创建自己的Dockerfile文件
FROM python:3.6.8
EXPOSE 5000
WORKDIR /code
RUN pip install --upgrade pip
COPY ./flask-fmtools/ /code
RUN pip install -r requirements.txt
CMD gunicorn run:app -c gunicorn_conf.py
- 制作docker镜像
docker build -t fmtools:v3 .
- 运行容器
docker run -it --rm --name myfmtools -p 5000:5000 -d fmtools:v3
5.其他相关命令记录
删除所有容器 docker rm (docker images -q)
-q 这个选项列出容器的数字 ID,而不是容器的所有信息