docker的简单使用
文章目录
- docker简单学习
-
- 1. docker相关概念
- 2. docker安装
- 3. docker相关命令
- 4. docker安装相关软件
-
- docker安装mysql
- 5. docker可视化管理工具
- 6. dockerfile使用
-
- docker相关指令
- 制作centos镜像
- 制作应用镜像
docker简单学习
1. docker相关概念
- 仓库(Repository):仓库用于保存镜像。
- 镜像(Image):Docker 镜像(Image)相关于mysql、zk的安装文件。
- 容器(Container):容器是镜像运行时的实体。类似于mysql服务实例。
2. docker安装
docker卸载
# 卸载软件sudo yum remove docker-ce docker-ce-cli containerd.io# 手动删除包含docker的目录# 查看包含docker的文件夹find / -name docker# 删除找到的docker文件rm -rf xxxxx
docker安装使用
#1. 安装之前设置docker拉取的仓库镜像## 阿里云的镜像仓库地址yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ## 清华大学源sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo## 上述两种镜像 二选一# 2. 安装docker服务## 安装最新版本的dockersudo yum install docker-ce docker-ce-cli containerd.io ## 列出可用docker版本 在指定版本安装yum list docker-ce --showduplicates l sort -rsudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io# 启动dockersudo systemctl start docker# 验证docker启动sudo docker run hello-world
3. docker相关命令
上述命令docker安装完成后会在服务器上安装了对应的docker服务端和docker客户端。
docker命令
#输入 docker 会列出docker所用可用命令[root@iZ2ze505h9bgsa1t9twojyZ /]# docker
# 查看某个命令详细用法docker ${commondName} --help
docker镜像管理
## 查找镜像(根据镜像名)#docker search ${imageName}docker search mysql## 拉取镜像 不添加tag则拉取最新版本的镜像docker pull [OPTIONS] NAME[:TAG]docker pull mysql:5.7## 删除镜像 需要添加-f 强制删除docker rmi -f [${iamge-name}|${image-id}]docker rmi -f hello-world## 查看仓库中拉取的镜像docker image ls
标签 | 描述 |
---|---|
REPOSITORY | 表示镜像的仓库源 |
TAG | 镜像的标签 相当于版本 |
IMAGE ID | 镜像ID |
CREATED | 镜像创建时间 |
SIZE | 镜像大小 |
docker容器管理
#docker run :创建一个新的容器并运行docker run [OPTIONS] IMAGE [COMMAND] [ARG...]# docker启动一个mysql服务# 名字为msql-master -d 后台启动 -p指定服务器的3310作为容器的3310端口# -v 为服务创建存储目录 -t -i 交互模式运行容器docker run --name mysql-master -d -p 3310:3310 -v/usr/local/mysql/data:/mysql/data -t-i mysql:5.7
OPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=“mysql-xiu”: 为容器指定一个名称;
- –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的hostname;
- -e username=“ritchie”: 设置环境变量;
- –env-file=[]: 从指定文件读入环境变量;
- –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
- -m 😗*设置容器使用内存最大值;
- –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- –link=[]: 添加链接到另一个容器;
- –expose=[]: 开放一个端口或一组端口;
- –volume , -v: 绑定一个卷
# docker 查看所有在运行的容器docker ps # docker 查看所有容器(包括已经停止运行的)docker ps -a# 停止容器# stop 优雅停止docker stop [OPTIONS] CONTAINER_ID [CONTAINER_ID...]# kill 快速杀掉进程docker kill [OPTIONS] CONTAINER_ID [CONTAINER_ID...]#docker移除容器docker rm [${containerId},${containerId2} ...]
4. docker安装相关软件
docker安装mysql
默认配置安准
#拉取镜像 tags :表示mysql的 版本比如 5.6 /5.7等等docker pull mysql:tags#运行镜像 run运行 --name 设置运行实例名称 -e配置环境变量 -v设置数据卷(程序运行过程产生的数据存在路径以及一些配置信息) -p 宿主端口:docker程序的端口 设置端口映射docker run --name mysql-master -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 -i -t mysql:5.7# 查看容器运行情况(会查询全部运行的)docker ps #查询运行的全部镜像docker ps -a #查询全部镜像(包含没有运行的)# 进入容器内部docker exec -it ${containerId} /bin/sh# 连接mysqlmysq -uroot -p123456 #退出容器exit
show master status 查看bin-log日志状态
使用默认配置方式启动的mysql服务,没有开启bin-log日志
指定配置安准
-v descDataDir:srcDataDir: 指定使用宿主地址/home/mysql57/data映射到docker镜像的数据存储路径(/var/lib/mysql)。
-v descConfDir:srcConfDir: 指定使用宿主地址/home/mysql57/conf映射到docker镜像的配置路径(/etc/mysql/)。
#创建存放映射文件夹mkdir -p /home/mydata/mysql/logmkdir -p /home/mydata/mysql/datamkdir -p /home/mydata/mysql/conf
my.cnf配置
在 /home/mydata/mysql/conf配置文件中添加my.cnf配置 添加如下配置
开启了mysql的binlog日志
[mysqld]server_id=2log_bin = mysql-binbinlog_format = ROWexpire_logs_days = 30
my.conf配置
[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve
## 指定mysql配置和数据存储地址 启动docker run --name mysql57 -p 3310:3306 -v /home/mydata/mysql/log:/var/log/mysql -v /home/mydata/mysql/data:/var/lib/mysql -v /home/mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
show master status 查看bin-log日志状态,如配置修改一样,binlog日志记录开启
5. docker可视化管理工具
Portainer是Docker的图形化管理工具,其为一个web应用,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。
# 搜索portainer镜像docker search portainer# 拉取portainer镜像docker pull portainer#运行镜像# --restart :容器重启策略,always表示在容器退出时总是重启容器docker run -p 9000:9000 --name protainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -d portainer/portainer##访问Portainerhttp://xxx.xx.xxx.xxx:9000
首次访问需要初始化admin 用户密码信息,登录首页
进入首页,需要配置docker服务的连接地址,笔者的portainer和docker在一台服务器,所以使用Local模式连接docker
docker中对应的镜像,容器,网络配置等信息。
该应用也可以通过页面的形式创建容器,如上通过页面创建了zk服务
6. dockerfile使用
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。基于此机制我们可以对官方镜像做扩展或者将生产应用打包成镜像。
dockerfile如何构建一个镜像
- 编写Dockerfile文件
- 构建镜像
- 按照普通镜像使用运行即可
docker相关指令
dockerfile详细说明
制作centos镜像
编写Dockerfile文件
通过编写Dockerfile文件来制作Centos镜像,并在官方镜像的基础上添加vim工具。
# 使用centos:7作为基础镜像FROM centos:7#设置镜像描述信息MAINTAINER xieqx <xxx@.com>#配置 /usr/local路径作为变量ENV MYPATH /usr/local#进入$MYPATH 变量对应的路径中,即 cd /usr/localWORKDIR $MYPATH# 安装vim工具RUN yum -y install vim # 暴露访问端口80EXPOSE 80# 容器启动的时候运行命令CMD /bin/bash
构建镜像
mkdir -p /home/docker/cd /home/docker/vim Dockerfile##填写上述配置进入Dockerfile#构建镜像 镜像名为mycentos 版本1.0docker build -t mycentos:1.0 . #查看镜像列表、docker images#查看镜像构建过程docker history 镜像id
启动镜像
#运行 mycentos 镜像docker run -itd --name my-centos mycentos:1.0#查看容器运行情况docker ps# 进入容器内部 使用vim命令docker exec -it e2781c127a4b /bin/sh
制作应用镜像
编写Dockerfile
# jar包基于jdk ,war包基于tomcatFROM openjdk:8-jre# 进入目录WORKDIR /app#将上下文中 jar包复制到 /app目录下,并且重命名为app.jarADD demo-0.0.1-SNAPSHOT.jar app.jar# 暴露端口EXPOSE 8089 # 启动应用固定命令ENTRYPOINT [ "java" , "-jar" ]# 动态传递jar包名CMD ["app.jar"]
构建镜像
mkdir -p /home/docker/app/cd /home/app/docker/vim Dockerfile##填写上述配置进入Dockerfile#构建镜像 镜像名为mycentos 版本1.0docker build -t myspboot:1.0 . #查看镜像列表、docker images#查看镜像构建过程docker history 镜像id
启动镜像
#运行 mycentos 镜像docker run -itd -p 8089:8089 --name my-spBoot mySpBoot:1.0#查看容器运行情况docker ps# 进入容器内部 使用vim命令docker exec -it e2781c127a4b /bin/sh