docker教程合集

前提说明

本文章是基于Linux centos系统的,如果你是window,可以:
1 买一个阿里云ecs
2 用virtualBox在你的电脑上装一个linux系统
强烈建议买一个ecs,可以少走很多弯路,docker搭配linux简直是神器~~相见恨晚啊

docker基础

- docker架构

docker教程合集_第1张图片

  • client即用户,通过命令行发布命令
  • daemon,守护进程,在安装完docker后,就会产生
  • image和container的关系就像面向对象中类和对象的关系,其中,image对应类,container对应对象,用户可以从仓库registries中拉取镜像,创建自己的容器.
  • 最后,registries又分为官方的和私有

- 服务相关命令

  • systemctl start docker 开启
  • systemctl stop docker
  • systemctl restart docker
  • systemctl status docker 查看docker的状态
  • systemctl enable docker 允许开机自启动在这里插入图片描述
    绿色就代表启动成功

- 镜像(image)相关命令

所谓镜像,就是一个涵盖了运行服务所需要的软件以及运行环境

- docker images --查看现有的镜像
在这里插入图片描述
- docker search xxx --搜索镜像
docker教程合集_第2张图片
- docker pull redis:版本 (若不跟版本号,默认最新版本)
在这里插入图片描述
再次输入docker images:
在这里插入图片描述
- docker rmi imageId
输入docker images查看imageId
在这里插入图片描述
输入:
在这里插入图片描述
法二 :docker rmi 名称+版本号

docker rmi redis:5.0

- 容器相关命令

容器是由镜像创建出来的实例,那么关注点就在如何创建

- 创建容器
docker -it --name=xxx 镜像:版本 /bin/bash
在这里插入图片描述
此时的终端已经不再是linux操作终端,而是进入了软件的操作终端
- 退出
exit
- 查看容器状态
docker ps
docker ps -a (查看存在以及已经退出的容器)
docker教程合集_第3张图片
- 创建容器第二种方法
第一种方法创建容器,在exit后就会自动关闭,现在只想让其运行,不想进入终端
docker run -id --name=c1 镜像:版本
在这里插入图片描述

此时就不会再进入终端,而是再后台运行
- 查看容器状态后进入容器
docker教程合集_第4张图片
此时就算再通过exit退出容器,容器也不会关闭
docker教程合集_第5张图片
- 启动停止容器
docker教程合集_第6张图片
docker教程合集_第7张图片
- 删除容器
在这里插入图片描述

查看某一特定容器信息
docker inspect xxx
docker教程合集_第8张图片

利用docker部署Mysql

- 搜索,拉取镜像

docker search mysql
docker pull mysql:8.0

二创建容器

现在根目录下创建mysql目录

mkdir /my/mysql/{conf,data,logs}

创建容器以及相关配置

docker run \
 --name mysql \
 -p 3306:3306 \
 -v /my/mysql/conf:/etc/mysql/mysql.conf.d \
 -v /my/mysql/data:/var/lib/mysql \
 -v /my/mysql/logs:/logs \
 -e MYSQL_ROOT_PASSWORD=123456 \
 -d mysql:8.0 \
 --character-set-server=utf8 --collation-server=utf8_unicode_ci

mysql:8.0

参数说明:
docker教程合集_第9张图片

docker教程合集_第10张图片

- 登录Msyql

docker exec -it mysql env LANG=C.UTF-8 /bin/bash
mysql -uroot -p123456

docker教程合集_第11张图片
这样就进入了熟悉的Mysql页面

- 从本地用工具连接docker里的Mysql

docker教程合集_第12张图片
注意这个时候连的是3307端口(上面创建容器时映射的端口号)!!!不是3306

利用docker部署tomcat,nginx

- tomcat

  • 拉取镜像,创建重启并配置
docker pull tomcat
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080\
-v ~/tomcat:/user/local/tomcat/webapps \
tomcat

- nginx

  • 先创建目录nginx.以及子目录conf/nginx.conf
mkdir /nginx
cd /nginx
mkdir /conf
cd /conf
vim nginx.conf
  • 复制代码到nginx.conf,按ESC+:wq保存
user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
  • 创建容器,映射目录以及端口
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

docker镜像原理

docker镜像原理

linux操作系统
docker教程合集_第13张图片

二docker镜像原理

可以这样理解,现在要拉取tomcat镜像,而tomcat依赖于jdk,所以连jdk一并拉取,但是用户看到的是一个整体,只知道拉取了tomcat镜像.像这样一层一层贴加,好处就是能让之前已经下载过的镜像,被后来下载的镜像重复使用
docker教程合集_第14张图片

三docker制作镜像

- 容器转镜像
制作镜像:
docker commit 容器Id 镜像名:版本
docker教程合集_第15张图片
压缩镜像:
docker save -o 文件名 镜像版本
docker教程合集_第16张图片
还原文件为镜像:
docker教程合集_第17张图片

dockerFile

概念

在这里插入图片描述

案例一:自定义centos镜像

centos 镜像创建的容器无法使用vim,默认的根目录是
需求:
1 默认登录路径为/user
2 可以使用vim
docker教程合集_第18张图片

  • 创建centos_dockerfile文件,编写镜像
FROM centos:7
MAINTAINER hzh
RUN yum install -y vim
WORKDIR /user
cmd /bin/bash
  • build命令创建镜像
    注意最后还有一个点
 docker build -f ./centos-dockerfile -t hzh_centos:1 .
  • 效果:
    docker教程合集_第19张图片

案例二:创建springboot项目

  • 创建springboot测试项目
    docker教程合集_第20张图片
    - 点击package进行打包docker教程合集_第21张图片

- 上传jar到服务器

- 编写dockerFile
在这里插入图片描述

- build命令
在这里插入图片描述
- 端口映射
在这里插入图片描述
访问ip+9000:test即可

你可能感兴趣的:(docker)