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服务
## 安装最新版本的docker
sudo yum install docker-ce docker-ce-cli containerd.io    

## 列出可用docker版本 在指定版本安装
yum list docker-ce --showduplicates l sort -r

sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io

# 启动docker
sudo systemctl start docker

# 验证docker启动
sudo docker run hello-world

docker的简单使用_第1张图片

3. docker相关命令

​ 上述命令docker安装完成后会在服务器上安装了对应的docker服务端和docker客户端。

docker命令

#输入 docker 会列出docker所用可用命令
[root@iZ2ze505h9bgsa1t9twojyZ /]# docker

docker的简单使用_第2张图片

# 查看某个命令详细用法
docker ${commondName} --help 

docker的简单使用_第3张图片
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

docker的简单使用_第4张图片

标签 描述
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
# 连接mysql
mysq -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/log
mkdir -p /home/mydata/mysql/data
mkdir -p /home/mydata/mysql/conf

my.cnf配置

在 /home/mydata/mysql/conf配置文件中添加my.cnf配置 添加如下配置

开启了mysql的binlog日志

[mysqld]
server_id=2
log_bin = mysql-bin
binlog_format = ROW
expire_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=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-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日志记录开启
docker的简单使用_第5张图片

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

##访问Portainer
http://xxx.xx.xxx.xxx:9000

docker的简单使用_第6张图片

首次访问需要初始化admin 用户密码信息,登录首页

docker的简单使用_第7张图片

进入首页,需要配置docker服务的连接地址,笔者的portainer和docker在一台服务器,所以使用Local模式连接docker

docker的简单使用_第8张图片

docker中对应的镜像,容器,网络配置等信息。
docker的简单使用_第9张图片
该应用也可以通过页面的形式创建容器,如上通过页面创建了zk服务

docker的简单使用_第10张图片

6. dockerfile使用

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。基于此机制我们可以对官方镜像做扩展或者将生产应用打包成镜像

dockerfile如何构建一个镜像

  1. 编写Dockerfile文件
  2. 构建镜像
  3. 按照普通镜像使用运行即可

docker相关指令

dockerfile详细说明

制作centos镜像

编写Dockerfile文件

​ 通过编写Dockerfile文件来制作Centos镜像,并在官方镜像的基础上添加vim工具。

# 使用centos:7作为基础镜像
FROM centos:7
#设置镜像描述信息
MAINTAINER xieqx <[email protected]>
#配置 /usr/local路径作为变量
ENV MYPATH /usr/local
#进入$MYPATH 变量对应的路径中,即 cd /usr/local
WORKDIR $MYPATH
# 安装vim工具
RUN yum -y install vim 
# 暴露访问端口80
EXPOSE 80
# 容器启动的时候运行命令
CMD /bin/bash

构建镜像

mkdir -p /home/docker/
cd /home/docker/
vim Dockerfile
##填写上述配置进入Dockerfile

#构建镜像 镜像名为mycentos 版本1.0
docker build -t mycentos:1.0 . 

#查看镜像列表、
docker images
#查看镜像构建过程
docker history 镜像id 

docker的简单使用_第11张图片

启动镜像

#运行 mycentos 镜像
docker run -itd --name my-centos mycentos:1.0

#查看容器运行情况
docker ps

# 进入容器内部 使用vim命令
docker exec -it e2781c127a4b /bin/sh

docker的简单使用_第12张图片

制作应用镜像

编写Dockerfile

# jar包基于jdk ,war包基于tomcat
FROM openjdk:8-jre
# 进入目录
WORKDIR /app
#将上下文中 jar包复制到 /app目录下,并且重命名为app.jar
ADD 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.0
docker 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

在这里插入图片描述

你可能感兴趣的:(容器化技术,docker,dockerfile,portainer)