docker部署
- 网络限制全部关闭
systemctl stop firewilld.service
systemctl disable firewilld.service
setenforce 0
sed -i ‘/^SELINUX=/c SELINUX=disabled’ /etc/selinux/config - 安装所需的软件包 yum-utils提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要devicemapper存储驱动程序。
yum install -y yum-utils device-mapper-persistent-data lvm2 - 添加镜像源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - 将软件包添加至本地缓存
yum makecache fast - 安装docker-ce
yum -y install docker-ce - 启动docker
systemctl start docker
systemctl enable docker
**注意:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
do
Error starting daemon: SELinux is not supported with the overlay2 graph …alse)
此linux的内核中的SELinux不支持 overlay2 graph driver ,解决方法有两个,要么启动一个新内核,要么就在docker里禁用selinux,–selinux-enabled=false
解决办法:
yum update xfsprogs
vi /etc/sysconfig/docker
在–selinux-enabled后面添加=false即可!
###docker-ce私有仓库搭建### - pull registry镜像
docker pull registry - docker iamges命令查看本地镜像;
- 然后使用
mkdir -pv /docker-Hub/registry
mkdir -pv /docker-Hub/data
docker run -d -ti --restart always --name docker-Hub -p 5000:5000 -v /docker-Hub/registry:/var/lib/registry -v /docker-HA/data:/tmp/registry registry - 查看容器运行/
docker ps -a - 由于仓库与客户端的https问题,需要修改/usr/lib/systemd/system/docker.service文件,添加
ExecStart=/usr/bin/dockerd --registry-mirror= http://4f73427d.m.daocloud.io --insecure-registry 192.168.211.153:5000
(systemctl daemon-reload)
systemctl restart docker
###docker-ce私有仓库客户端###
12. 配置docker信任私有仓库地址(http)
需要修改/usr/lib/systemd/system/docker.service文件,添加
ExecStart=/usr/bin/dockerd --registry-mirror= http://4f73427d.m.daocloud.io --insecure-registry 192.168.211.153:5000
(systemctl daemon-reload)
systemctl restart docker
- 注意查看方法
镜像:
#curl -XGET http://registry_ip:5000/v2/_catalog
标签:
#curl -XGET http://registry_ip:5000/v2/image_name/tags/list
Buildfile(Dockerfile)构建和语法###
- 创建Dockerfile脚本
vi Dockerfile
例如: FROM CentOS:7.2 #选择基础镜像
MAINTAINER name #镜像创建者和邮箱
LABEL version=“1.0” #给镜像添加信息
RUN apt-get install -y software-properties-common #安装软件
CMD echo hello word #设置容器启动时执行的命令
#该指令只能在文件中存在一次,如果有多个,则只执行最后一条。
ENTRYPOINT ls –l #设置容器启动时执行的命令
#可以多次设置,但是只有最后一个有效。
USER root #容器启动用户
EXPOSE 80 #指定容器映射宿主机的端口
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 #设置变量
ADD nginx.conf /etc/nginx/nginx.conf #从宿主机当前文件夹复制到容器里
VOLUME ["/tmp/data"] #指定挂载点
WORKDIR /path/to/workdir #切换目录(cd)
ONBUILD <Dockerfile关键字> #在子镜像中执行 - 执行构建命令:
docker build -t second:v1.0 .
注意最后有个点,代表使用当前路径的 Dockerfile 进行构建 ,
-t second : v1.0 给新构建的镜像取名为 second, 并设定版本为 v1.0 。
docker build: 用 Dockerfile 构建镜像的命令关键词。
[OPTIONS] : 命令选项,常用的指令包括 -t 指定镜像的名字, -f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下),如果不使用 -f,则默认将上下文路径下的名为 Dockerfile 的文件认为是构建镜像的 “Dockerfile” 。
上下文路径|URL: 指定构建镜像的上下文的路径,构建镜像的过程中,可以且只可以引用上下文中的任何文件 。 - Supervisor: supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:apache2]
command=/bin/bash -c “source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND”
Docker 基础命令基础命令
-
从 Docker Hub 搜索镜像
docker search
用法: docker search TERM
参数:
–automated=false 仅显示自动创建的镜像
–no-trunc=false 输出信息不截断显示
-s, --stars=0 指定仅显示评价为指定星级以上的镜像 -
docker info //查看当前信息
-
docker pull //下载镜像
docker push //上传镜像
docker images //显示当前系统镜像
docker rmi //删除一个或多个镜像, -f 强制删除
docker save |load //存储镜像|载入镜像 -
导入本地容器快照
cat 本地容器快照名|docker import - 自定义容器名:自定义标记名 -
运行一个容器
docker run
-i 交互式
-t 获得一个终端-
-d 守护进程 -
docker logs 464 //查看容器内标准输出的内容
docker ps //查看容器,-a 查看所有容器,-q 只查看容器ID
docker rm //删除一个容器
docker create //创建一个容器,但不运行
docker start|stop|restart|kill //运行已停止的容器|停止一个正在运行的容器|重启一个容器|杀死一个正在运行的容器
docker export //导出容器快照 -
退出容器
exit 或 ctrl + d //退出并停止容器
先按 ctrl + p再按 ctrl + q //退出伪终端,容器后台运行
docker attach 8d //输入容器ID,若没有重名的,输入第一个字母即可 -
将容器变成镜像
docker commit 容器名字 镜像名docker几个常用的命令
-
令查看容器
docker ps -
检查Docker的安装是否正确,如果没有找到此命令,则表示Docker没有正确安装
docker info -
拉取一个预建的镜像
docker pull busybox -
以后台进程的方式运行hello docker
sample_job命令会隔一秒打印一次Docker,使用Docker logs可以查看输出。如果没有起名字,那这个job会被分配一个id,以后使用命令例如Docker logs查看日志会变得比较麻烦
sample_job=$(docker run -d busybox /bin/sh -c “while true; do echo Docker; sleep 1; done”) -
所有Docker命令
docker help -
运行Docker logs命令来查看job的当前状态:
docker logs $sample_job -
停止名为sample_job的容器
docker stop $sample_job -
重新启动该容器
docker restart $sample_job -
如果要完全移除容器,需要将该容器停止,然后才能移除
docker stop $sample_job docker rm $sample_job -
将容器的状态保存为镜像
docker commit $sample_job job1 -
令查看所有镜像的列表
docker images