Docker快速入门自用笔记

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. Docker - 介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不同Linux的内核一致。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. Docker - 与虚拟机的不同

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. Docker - Docker架构

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

在这里插入图片描述

dockerHub
在这里插入图片描述

docker架构CS架构程序
在这里插入图片描述

在这里插入图片描述

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 pull nginx
docker images

7.2 将镜像导出为压缩包

docker save -o nginx.tar nginx

在这里插入图片描述

7.3 删除镜像

docker rmi nginx:latest

在这里插入图片描述

7.4 从压缩包加载镜像

docker load -i nginx.tar

在这里插入图片描述

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 后台运行

在这里插入图片描述

8.2 输出日志

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

在这里插入图片描述

8.3 查看容器状态

docker ps

8.4 进入容器内部

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

在这里插入图片描述

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

8.5 停掉容器

docker stop

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

docker ps -a

8.7 删除容器

docker rm xxxx -f #强制删除

在这里插入图片描述

在这里插入图片描述

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 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 run \
--name mn\
-v html:/root/html \
-p 8080:80 \
nginx \

在这里插入图片描述

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

11. 目录挂载

在这里插入图片描述

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

在这里插入图片描述

12. dockerfile 自定义镜像

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

# 指定基础镜像
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

分层

在这里插入图片描述
此时dockerfile可以简化为

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

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

在这里插入图片描述

13. DockerCompose

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker