Docker 基础

一、快速入门:

1.Docker的安装

Docker 基础_第1张图片

安装docker引擎

官方网址:Install Docker Engine on CentOS | Docker Docs

朋友们,有坑,千万不要用官方的仓库,就是下面这一步

记得用国内的镜像源:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

下图是官方的步骤,第二行代码应换成国内的镜像源

Docker 基础_第2张图片

如果,不小心用了国外的镜像源,记得按下面步骤

1.进入  /etc/yum.repos.d  目录

2. 删除与docker相关的文件

3.配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.然后再按官方的步骤安装

2.部署MySql

docker run -d \
  --name myFirst \
  -p 3000:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql


-d    是让容器在后台运行,一般与run是配套的。


--name    给容器命名,必须唯一
--p       设置端口映射,访问主机的3000端口 映射到 访问容器的3306端口

--e        暂时不清楚?设置时区?

--e       也不太清楚?得给mysql设置个初始化密码



我懂了  
-e  KEY=VALUE          意思是设置环境变量

不同的镜像 -e不同 ,看docker hub 上镜像的说明

通过docker ps 可以看到,myFirst这个容器正在运行

此时你就可以 进入容器中 ,去登录mysql客户端

docker exec -it myFirst bash

Docker 基础_第3张图片

我们也可以在linux虚拟机上去访问容器里的数据库,因为我们设置了端口映射,当访问本机的3000端口时,回去访问容器的3306端口。但记得 在连接,记得加 -h ip地址  ,虽然是在本机上操作,但还是要用上本机的ip地址。

 Docker 基础_第4张图片

3.镜像和容器

Docker 基础_第5张图片

Docker 基础_第6张图片

4.命令解读

一般docker run 和 -d 选项是配套的。

Docker 基础_第7张图片

Docker 基础_第8张图片

Docker 基础_第9张图片

下面是真正的命名规范

Docker 基础_第10张图片

5.案例 拉取nginx

docker的容器给我们准备的是 所必备的最小运行资源,因此进入容器内后,并不能使用vi 进入vim编辑器。

Docker 基础_第11张图片

1.运行容器

2.查看容器

当使用 docker inspect 容器name   是查看某个容器的详细信息

当使用 docker volume inspect   是查看数据卷的详细信息,可以取看它本机上的挂载点在哪里。

3. 查看数据卷详细信息( 当不指定路径时,本机挂载点 默认是在  /var/lib/docker/volumes/    这个路径下)

Docker 基础_第12张图片

4.当修改挂载点下的文件后,容器内相应的文件也被修改。

数据卷就像是一个桥梁

Docker 基础_第13张图片

当我测试  docker volume prune 这个指令时,它会把 被删除容器的 数据卷清除 ,释放磁盘空间。

Docker 基础_第14张图片

Docker 基础_第15张图片

6.mysql 容器的数据挂载

Docker 基础_第16张图片

遇到的问题:

1.final shell无法正常上传文件 。因为我使用的是普通用户,普通用户只能在自己的home/用户名/目录下进行上传,是无法去 其他路径,即root用户的范围来上传文件。

解决:使用root 用户去连接。

Docker 基础_第17张图片

7.Dockerfile 语法

Docker 基础_第18张图片

Docker 基础_第19张图片

Docker 基础_第20张图片

分层,可以让我们去共享某一个层。

Docker 基础_第21张图片

Docker 基础_第22张图片

copy时,docker会为我们去创建目录

下面这段代码,让我回忆了很多,我重新回顾了环境变量,软链接。

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
ENV TZ=Asia/Shanghai
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 设定时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安装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 8080
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

Docker 基础_第23张图片

下面来回顾软连接:

我忘记 -s -f  的含义, 但我从来不知道 -n是什么意思 

我的理解:解引用时,会指向确切的文件。即$TZ 会被解析成  具体的文件 ,然后修改$TZ 的值后,软链接仍然指向原来的值,可以看看下面第3张图。

Docker 基础_第24张图片

Docker 基础_第25张图片

Docker 基础_第26张图片

Docker 基础_第27张图片

8.自定义镜像

这个 句点 不能缺

Docker 基础_第28张图片

Docker 基础_第29张图片

实践:

Docker 基础_第30张图片

在创建并运行容器时,需要指定其 名字:版本

9. 网络

使用自定义网络,才可以通过 容器名 ping通

Docker 基础_第31张图片

当将容器连接到 自定义网络上时 ,有两种方式。

1.将运行时的容器连接到指定网络。使用docker  network create

2.在创建容器时连接到指定网络。使用 --network 关键字

 Docker 基础_第32张图片

Docker 基础_第33张图片

10.项目部署

一个容器可以配置多个端口映射

番外篇:硬啃英语文档

1.Docker overview 

  :响应式部署和扩展

Docker Architecture

Docker 基础_第34张图片

Docker 基础_第35张图片

守护进程

Docker 基础_第36张图片

客户端

Docker 基础_第37张图片

Docker registries: Docker 注册表

A Docker registry stores Docker images. Docker Hub is a public registry that anyone can use, and Docker looks for images on Docker Hub by default. You can even run your own private registry.

When you use the docker pull or docker run commands, Docker pulls the required images from your configured registry. When you use the docker push command, Docker pushes your image to your configured registry.

Docker 基础_第38张图片

Docker Objects

Docker 基础_第39张图片

你可能感兴趣的:(docker,容器,运维)