如何搭建一个docker容器

搭建docker容器

一. 概述:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源,让我们开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 架构是在使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker 的优点:Docker 是一个用于开发,交付和运行应用程序的开放平台。能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

二. Docker的应用场景

1. Web 应用的自动化打包和发布。
2. 自动化测试和持续集成、发布。
3. 在服务型环境中部署和调整数据库或其他的后台应用。
4. 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

三. 搭建docker

1、下载
1.1 下载安装docker所需要依赖命令
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 设置软件源命令(以下任选一种即可)
清华大学 (推荐):
yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
阿里 (推荐):
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
官方 (不推荐):
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.3 查看docker源中的docker版本命令
yum list docker-ce --showduplicates | sort -r
1.4 默认最新版本安装
yum install -y docker-ce docker-ce-cli containerd.io
1.5 给docker配置阿里云镜像源
第一个命令:
sudo mkdir -p /etc/docker
第二个命令:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://i1el1i0w.mirror.aliyuncs.com"]
}
EOF
2、启动
2.1 重新加载命令
systemctl daemon-reload
2.2 启动docker命令
systemctl start docker
2.3 查看docker版本
docker version
2.4 查看docker启动状态(如果Active: active (running)代表成功)
systemctl status docker
2.5 重启docker服务(使用其中一个即可)
2.5.1 systemctl restart docker
2.5.2 非root用户:sudo systemctl restart docker
注意:非root用户 sudo su root 用户切换身份
3、下载命令补全工具
yum -y install bash-completion
4、编写Dockerfile
4.1 执行命令 (按照顺序执行):
4.1.1: mkdir /home/docker
4.1.2: cd /home/docker
4.1.3: vim Dockerfile
4.2 编写dockerfile
###### 第一行必须指定基础容器,java项目,运行需要jdk支撑
FROM java:8
###### 维护者信息(可选)
MAINTAINER sunhongliang
###### 拷贝我们项目的jar包到容器中 
###### 第一个demo.jar为我们项目打出的jar包名称
###### 第二个demo.jar为容器名称
ADD demo.jar demo.jar
###### 镜像启动容器后暴露的端口
EXPOSE 8080
###### 第三个参数demo.jar为容器名称
ENTRYPOINT ["java","-jar","demo.jar"]
4.3 打包
将项目打包成jar放到 Dockerfile同一目录
5、制作镜像

5.1 启动命令
docker build -t demo:v1 .
5.2 查看镜像
docker images

6、启动镜像
6.1 执行命令
docker run -it -d -p 8084:8080 --name=demos demo:v1
参数解释:

最后一个参数star:v1是我们前面制作出来的镜像的REPOSITORY和TAG用引号拼接
name=stars 是定义启动的容器的名字,后面使用命令查看容器的时候看到的IMAGE就是
8080使我们在项目中定义的项目访问端口
8084是docker启动的容器的访问端口
(docker不会允许直接访问项目的端口,会给我们做一个映射,就像nginx一样,我们浏览器访问项目的时候使用8084,docker会给我们映射到服务器项目的8080端口上。)
注意:

6.2 语法

OPTIONS说明:
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

6.2.1 -a
指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项。 
6.2.2 -d
后台运行容器,并返回容器ID。 
#使用docker镜像mysql:5.7以后台模式启动一个容器,并将容器命名为mysql。 
docker run --name mysql 
-d mysql:5.7 
6.21.3 -e
设置环境变量。 
#使用docker镜像mysql:5.7以后台模式启动一个容器,并将容器命名为mysql 
#将容器的3306端口映射到主机3307端口 
#将root用户的密码设为root 
docker run -p 3307:3306 
--name mysql\ 
-e MYSQL_ROOT_PASSWORD=root\ 
-d mysql:5.7 
6.2.4 -h
指定容器的hostname。 
6.2.5 -i
以交互模式运行容器,通常与 -t 同时使用。 
6.2.6 -m
设置容器使用内存最大值。 
6.2.7 -P
随机端口映射,容器内部端口随机映射到主机的端口。 
使用镜像mysql:5.7以后台模式启动一个容器,并将容器的3306端口映射到主机随机端口。 
docker run -P 
-d mysql:5.7 
6.2.8 -p
指定端口映射,格式为:主机(宿主)端口:容器端口。 
使用镜像mysql:5.7以后台模式启动一个容器,并将容器的3306端口映射到主机3307端口。 
docker run -p 3307:3306 
-d mysql:5.7 
6.2.9 -t
为容器重新分配一个伪输入终端,通常与 -i 同时使用。 
6.2.10 -v
绑定一个卷。 
#使用镜像mysql:5.7,以后台模式启动一个容器,将容器的3306端口映射到主机的3306端口 
#的容器目录/etc/mysql/data映射到主机的/mydata/myql/data。 
docker run -p 3306:3306 
-v /mydata/myql/data:/etc/mysql/data 
-d mysql:5.7 
6.2.11 --cpuset
绑定容器到指定CPU运行。 
6.2.12 --dns
指定容器使用的DNS服务器,默认和宿主一致。 
6.2.13 --dns-search
指定容器DNS搜索域名,默认和宿主一致。 
6.2.14 --env-file
从指定文件读入环境变量。 
6.2.15 --expose
开放一个端口或一组端口。
6.2.16 --link
添加链接到另一个容器。
6.2.17 --name
为容器指定一个名称。 
#使用docker镜像mysql:5.7以后台模式启动一个容器,并将容器命名为mysql。 
docker run --name mysql 
-d mysql:5.7 
6.2.18 --net
指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型。
6.2.19 --volume
绑定一个卷。 
6.3 通过浏览器访问接口即可
http://192.168.1.1:8084/test
END

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