容器安装及使用基础

容器安装及使用:

1. 操作系统64位,Centos的内核版本3.1及以上 ,查看内核版本: uname -r
2. yum 更新:sudo yum update
3. 安装需要的软件包:yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
> - yum install -y yum-utils device-mapper-persistent-data lvm2
> - 安装前可查看device-mapper-persistent-data和lvm2是否已经安装
> - rpm -qa|grep device-mapper-persistent-data
> - rpm -qa|grep lvm2
4. 设置yum源

> yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5. 更新yum软件包索引: yum makecache fast

6. 安装docker-ce
```
yum list docker-ce -y
#查看docker版本
docekr version 或者 docker -v
```


7. 启动docker
```
systemctl start docker
#开机启动
systemctl enable docker
```

8. 更换镜像地址,然后从起docker
> - { “registry-mirrors”: [“https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors”] }
> - systemctl restart docker


----------------------------------------
容器基本命令使用:

什么是容器?

**镜像:**
  docker 的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。(  docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器;)
例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了mysql或用户需要的其他应用程序。



** Dockerfile概念: **

Docker镜像实际上是由一层一层的系统文件组成,这种层级的文件系统被称为UnionFS( Union file system  统一文件系统),镜像可以基于dockerfile构建,dockerfile是一个描述文件,里面包含了若干条密令,每条命令都会对基础文件系统创建新的层次结构。docker提供了一个很简单的机制来创建镜像或更新现有的镜像。用户甚至可以从其他人那里下载一个已经做好的镜像直接使用。(镜像是只读的,可以理解为静态文件)

**镜像:**
docker利用容器来运行应用:docker容器是由docker镜像创建的运行实例。docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。

**docker仓库**
docker仓库是用来包含镜像的位置,docker提供了一个注册服务器(register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像,

转载一篇对docker介绍比较好的文档:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html

--------------------

镜像命令:

1. 查找镜像
docker search 名称如:docker search mysql
2. 下载镜像
docker pull 名称如:docker pull mysql,他就会下载最新版本的mysql

3. 查看下载的镜像
docker images
docker images -f 条件
docker images -f reference=‘testimage’

4. 删除镜像
docker rmi -f 镜像ID或镜像名:版本

5. 删除容器
docker rm 容器名或ID

6. 查看元信息
docker inspect 镜像ID或镜像名:版本

7. 启动一个容器并运行一个镜像:
```
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

docker exec -it mysql bash
mysql -u root -p

```
8. 查看运行的容器
docker ps查看所有的容器,包括历史记录docker ps -a

9. 停止容器
docker stop 容器名或ID

10. 启动容器
docker start 容器名或ID

11. 查看日志
docker logs 容器名或ID

12. 进入容器
docker exec -it 容器名 bash


---------------
DockerFile常用指令

1. FROM第一行必须是 FROM ,指定基础镜像
2. MAINTAINER作者信息
3. LABEL给镜像指定元数据,可以有多个
4. COPY用于从宿主机复制文件到创建的新镜像文件
5. ADD基本用法和COPY指令一样,ADD支持使用TAR文件和URL路径
6. WORKDIR用于为Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY和ADD指定设定工作目录,只会影响当前WORKDIR之后的指令。在Dockerfile文件中,WORKDIR可以出现多次,路径可以是相对路径,但是它是相对于前一个WORKDIR指令指定的路径另外,WORKDIR可以是ENV指定定义的变量
7. VOLUME用来创建挂载点,可以挂载宿主机上的卷或者其他容器上的卷
8. EXPOSE用于给容器打开指定要监听的端口以实现和外部通信
9. ENV用来给镜像定义所需要的环境变量,并且可以被Dockerfile文件中位于其后的其他指令
10. CMD容器启动时运行的命令
11. RUN指定docker build过程中运行的指令 - 通常shell命令
12. DockerFile 实例-文件名称:Dockerfile
```
#指定基础镜像
FROM docker.io/openjdk
#指定环境变量
ENV LANG="zh_CN.UTF-8"
#将运行的jar包拷贝到容器的 opt目录中
COPY target/test111-1.0-SNAPSHOT.jar /opt/
#指定容器暴露对外的端口
EXPOSE 80
#指定环境变量 - 后面RUN和CMD运行命令的目录
WORKDIR /opt
#运行 shell ,指定jar文件的时区
RUN touch test111-1.0-SNAPSHOT.jar && echo 'Asia/Shanghai' > /etc/timezone
#运行jar包
CMD java -jar test111-1.0-SNAPSHOT.jar
```
13. 运行dockerfile打包为镜像

在Dockerfile目录上打包一个镜像,名称和标签为 sb_test2:1.0
docker build -f Dockerfile -t sb_test2:1.0 .
成功以后可以使用:docker images 查看是否有对应的镜像

14. 运行镜像为一个容器-指定映射端口,可以通过宿主机的80访问到对应的服务
docker run -itd sb_test2:1.0 -p 80:9999
运行过程如果失败,查看启动日志:
查看所有运行的容器: docker ps -a
查看容器的日志: docker logs 容器ID




原文地址:https://www.cnblogs.com/lean-blog/p/13897376.html