Docker快速入门自用笔记

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

okfang616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值