Docker快速入门自用笔记

1. Docker - 介绍

Docker快速入门自用笔记_第1张图片
Docker快速入门自用笔记_第2张图片
Docker快速入门自用笔记_第3张图片

不同Linux的内核一致。
Docker快速入门自用笔记_第4张图片
Docker快速入门自用笔记_第5张图片
Docker快速入门自用笔记_第6张图片
Docker快速入门自用笔记_第7张图片

2. Docker - 与虚拟机的不同

Docker快速入门自用笔记_第8张图片
Docker快速入门自用笔记_第9张图片
Docker快速入门自用笔记_第10张图片

3. Docker - Docker架构

镜像(只读):应用程序及其所需依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器:镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。

Docker快速入门自用笔记_第11张图片

dockerHub
Docker快速入门自用笔记_第12张图片

docker架构:CS架构程序
Docker快速入门自用笔记_第13张图片

Docker快速入门自用笔记_第14张图片

4. 安装Docker

4.1 卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

4.2.安装docker

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

4.3.启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v

4.3.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

5. 安装DockerCompose

Linux下需要通过命令下载:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

5.1.修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

5.2.Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

6. Docker镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。
官网地址:https://hub.docker.com/_/registry

6.1. 简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry	\
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

6.2. 带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

6.3. 配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

7. Docker基本操作

镜像组成:repository:tag
如果没有指定tag,就代表latest 即最新。

  1. 从dockerfile里 docker build
  2. 从服务器拉取镜像 docker pull
  3. 查看镜像 docker images
  4. 删除镜像 docker rmi
  5. 推送镜像到服务器docker push
  6. 将镜像保存为压缩包 docker save
  7. 加载压缩包为镜像 docker load

查看 docker所有命令:docker helpdocker images --help

7.1 从dockerhub拉取一个镜像

https://hub.docker.com/

Docker快速入门自用笔记_第15张图片

docker pull nginx
docker images

7.2 将镜像导出为压缩包

docker save -o nginx.tar nginx

在这里插入图片描述

7.3 删除镜像

docker rmi nginx:latest

Docker快速入门自用笔记_第16张图片

7.4 从压缩包加载镜像

docker load -i nginx.tar

Docker快速入门自用笔记_第17张图片

8. Docker 容器命令

docker run #创建并运行容器
docker pause #暂停
docker unpause #恢复运行
docker stop #停止
docker start #恢复运行


docker ps # 查看所有运行的容器及状态
docker logs # 查看运行日志
docker exec # 进入容器执行命令

docker rm # 删除容器

8.1 创建并运行一个nginx容器

  1. 从 dockerhub 查看 Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx
  • docker run 创建并允许一个容器
  • –name 起一个名字
  • -p 宿主机端口:容器端口
  • -d 后台运行

Docker快速入门自用笔记_第18张图片

8.2 输出日志

docker logs myNginx
docker logs -f myNginx #持续跟踪

Docker快速入门自用笔记_第19张图片

8.3 查看容器状态

docker ps

8.4 进入容器内部

docker exec -it mn bash
  • docker exec: 进入容器内部,执行一个命令
  • -it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn:要进入容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

Docker快速入门自用笔记_第20张图片

没有vi命令怎么办?
可以用 sed命令

8.5 停掉容器

docker stop

8.6 查看所有容器(包括除了运行的)

docker ps -a

8.7 删除容器

docker rm xxxx -f #强制删除

Docker快速入门自用笔记_第21张图片

Docker快速入门自用笔记_第22张图片

docker pull redis:latest
docker run --name myRedis -d redis
docker run --name myRedis -p6379:6379 -d redis redis-server --appendonly yes
docker exec -it myRedis bash

9. 数据卷

Docker快速入门自用笔记_第23张图片

Docker快速入门自用笔记_第24张图片

docker volume
  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume
docker volume create html # 创建数据卷 html
docker volume ls # 查看所有数据
docker volume inspect html # 查看具体某个卷的详细信息
docker volume prune # 删除没有被使用的卷
docker volume rm html # 删除数据卷 html

10. 数据卷挂载

Docker快速入门自用笔记_第25张图片

docker run \
--name mn\
-v html:/root/html \
-p 8080:80 \
nginx \

Docker快速入门自用笔记_第26张图片

docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx
docker inspect html

11. 目录挂载

Docker快速入门自用笔记_第27张图片

docker pull mysql:latest
mkdir /tmp/myql/data -p
mkdir /tmp/myql/conf -p

cp hmy.cnf /tmp/myql/conf

docker run \
--name some-mysql \
-p 3306:3306 \
-v /tmp/myql/data:/var/lib/mysql \
-v /tmp/myql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-e MYSQL_ROOT_PASSWORD=123 \
-d \
mysql:latest

Docker快速入门自用笔记_第28张图片

12. dockerfile 自定义镜像

Docker快速入门自用笔记_第29张图片
Docker快速入门自用笔记_第30张图片
Docker快速入门自用笔记_第31张图片

Docker快速入门自用笔记_第32张图片

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
docker build -t javaweb:1.0 .
# . 就是dockerfile的目录
docker images
docker run --name web -p 8090:8090 -d javaweb:1.0

分层:

Docker快速入门自用笔记_第33张图片
此时dockerfile可以简化为:

# 指定基础镜像
FROM java:8-alpine

COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

Docker快速入门自用笔记_第34张图片

13. DockerCompose

Docker快速入门自用笔记_第35张图片
Docker快速入门自用笔记_第36张图片
Docker快速入门自用笔记_第37张图片

你可能感兴趣的:(备战秋招!,docker,spring,cloud,容器)