Docker安装,命令和dockerfile构建镜像

Docker

Docker安装,命令和dockerfile构建镜像_第1张图片
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker安装

windows:
    以win10为例,安装 Hyper-V。Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
    之后就可以去官网下载docker了
centos:
    sudo yum install docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker  # 启动docker
# 查看docker服务状态
systemctl status docker
# 查看docker 版本
docker version
# docker 服务命令
	启动停止命令:
	systemctl [参数] docker
	参数详解:
	  start   开启服务
	  stop    关闭
	  restart 重启
# docker镜像加速
1)访问 daocloud.io 网站,登录 daocloud 账户
2)点击右上角的加速器
3)修改daemon.json文件,添加如下内容:
	# vim /etc/docker/daemon.json
	{"registry-mirrors": ["http://74f21455.m.daocloud.io"], "insecure-registries": []}
	# systemctl restart docker 重启docker

docker 命令

docker由三部分组成,分别是镜像(image)、容器(container)、仓库(repository)

镜像(image)

1.搜索镜像
docker search nginx
2.拉取镜像
docker pull nginx
3.查看本地镜像
docker images
4.查看镜像历史
docker history docker
5.镜像重命名
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag 0e5574283393 fedora/httpd:version1.0  # 使用镜像ID重命名
docker tag httpd fedora/httpd:version1.0  # 使用镜像名重命名
docker tag httpd:test fedora/httpd:version1.0.test  # 使用镜像名称和标签重命名
6.镜像删除
docker rmi [OPTIONS] IMAGE [IMAGE...]
docker rmi 0e5574283393
docker rmi  httpd
docker rmi httpd:test
7.导出镜像: 以下两种写法均可
docker save httpd > httpd.tar
docker save -o httpd.tar httpd
8.导入镜像:以下两种写法均可
docker load < httpd.tar
docker load -i httpd.tar

容器(container)

1.查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有的容器,包括正在运行和已经停止的
2.创建容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
	-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
	-d: 后台运行容器,并返回容器ID;
	-i: 以交互模式运行容器,通常与 -t 同时使用;
	-P: 随机端口映射,容器内部端口随机映射到主机的端口
	-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
	-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
	--name="nginx-lb": 为容器指定一个名称;
	--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
	--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
	-h "mars": 指定容器的hostname;
	-e username="ritchie": 设置环境变量;
	--env-file=[]: 从指定文件读入环境变量;
	--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
	-m :设置容器使用内存最大值;
	--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
	--link=[]: 添加链接到另一个容器;
	--expose=[]: 开放一个端口或一组端口;
	--volume , -v:	绑定一个卷
docker run -d httpd
3.停止和启动容器
docker start [container_id]
docker stop [container_id]
4.删除容器
docker rm [container_id]  # 删除已经关闭的容器
docker rm -f [container_id]  # 强制删除容器,包括正在运行的容器
5.进入退出容器:进入容器有好几中方法,包括ssh,三方nsenter,docker原生工具。ssh会增加资源开销,三方工具需要学习,这里主要介绍原生工具。
docker run -it --name [container_name] -it [docker_image] /bin/bash # 可以传dit三个参数,后台运行加上进入容器,自动进入容器
启动命令参数详解:
	--name: 给容器定义一个名称
	-i: 则让容器的标准输入保持打开
	-t: 让docker分配一个伪终端,并绑定到容器的标准输入上
	/bin/bash: 执行一个命令
docker exec -it 容器id /bin/bash # 手动进入容器
docker attach [OPTIONS] CONTAINER # 手动进入容器 attach与上面的区别是,attach退出容器的时候容器会停止
exit # 退出容器
ctrl + d # 退出容器
6.通过容器创建镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit -m 'mkdir /smart' -a "smart" d74fff341687 smart-nginx:v2.0  # -m 描述, -a 作者
7.日志,信息
docker logs [OPTIONS] CONTAINER
docker logs -f d74fff341687  # 追踪容器d74fff341687的日志
docker inspect d74fff341687  # 获取容器d74fff341687的元数据信息
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' httpd  # 获取容器d74fff341687的Ip地址

仓库(repository)

docker仓库分为:
公有仓库:Docker hub、Docker cloud等。
私有仓库:registry、harbor等。
本地仓库:在当前主机存储镜像的地方
docker login # 输入docker账号和密码就可以拉取该账号下的所有镜像
docker pull [镜像名称]
docker push [镜像名称]
docker search [镜像名称]
私有仓库的搭建请参考:
https://www.cnblogs.com/huanchupkblog/p/10843800.html

除了上述的一些方法,还有一些其他的方法.
docker run -itd -v /tmp:/test1 httpd # 将宿主机/tem挂载到容器目录/test1,和mount挂载命令功能一样
docker run -d -p 172.16.179.130:1199:80 httpd # 将宿主机ip和端口1199映射为容器端口80
docker cp /www/runoob 96f7f14e99ab:/www # 主机目录与容器目录的互相拷贝
docker cp 96f7f14e99ab:/www /tmp/

dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
1.创建dockerfile
# Base images 基础镜像
FROM centos:centos7.5.1804
#MAINTAINER 维护者信息
LABEL maintainer="[email protected]"

# 创建文件夹 下载centos配置文件
RUN curl -so /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo && rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN mkdir -p /root/Desktop/overhand_project/overhand

# 拷贝文件
COPY . /root/Desktop/overhand_project/overhand

WORKDIR /root/Desktop/overhand_project/overhand

# 安装软件
RUN yum install epel-release -y
RUN yum -y install gcc python36 net-tools
RUN yum -y install python36-devel mysql-devel
RUN ln /usr/bin/python3.6 /usr/bin/python -f
RUN cp /usr/bin/yum /usr/bin/yum.bak
RUN pip3 install --upgrade pip
RUN pip3 install django==1.11.11
RUN pip3 install matplotlib
RUN pip3 install django_crontab
RUN pip3 install pandas
RUN pip3 install scikit-learn
RUN pip3 install uwsgi
RUN pip3 install plotly
RUN pip3 install xgboost
# 暴露端口
EXPOSE 8002
#容器启动时执行命令
CMD ["./run.sh"]
2.创建镜像
docker build -t overhang:v1.0
3.用镜像创建容器
docker run -it overhang:v1.0 /bin/bash

其他的docker命令和dockerfile指令请参考官网
官网:https://docs.docker.com/engine/reference/run/

你可能感兴趣的:(docker,docker)