Docker在Linux中的安装
一、rpm离线安装docker17.12
1.下载docker安装包
在下载docker-ce-17.12.0.ce-1.el7.centos.x86_64.rpm
2.下载9个依赖
在下载8个依赖
audit-libs-python-2.7.6-3.el7.x86_64.rpm checkpolicy-2.5-4.el7.x86_64.rpm libcgroup-0.41-13.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-8.el7.x86_64.rpm policycoreutils-python-2.5-17.1.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm setools-libs-3.3.8-1.1.el7.x86_64.rpm在下载container-selinux-2.9-4.el7.noarch.rpm
rpm -ivh /root/docker/*.rpm –nodeps –force
curl -sSL | sh -
启动Docker引擎
sudo systemctl enable docker
sudo systemctl start docker建立docker用户组
sudo groupadd docker
将用户加入docker组
sudo usermod -aG docker $USER
这里使用阿里云的容器镜像服务,目前公测,免费的。
1) 去阿里云官网,登录控制台,在产品与服务里面找到容器镜像服务 2)点击开通 3) 点击镜像加速器,变有了加速地址(不用镜像加速器的话,镜像都是国外的,因为墙,所有下载是龟速)镜像加速器
vi /etc/systemd/system/multi-user.target.wants/docker.service
ExecStart=/usr/bin/dockerd –registry-mirror=https://….mi rror.aliyuncs.comsudo systemctl daemon-reload
sudo systemctl restart docker检查加速器是否生效
sudo ps -ef | grep dockerd
root 5346 1 0 19:03 ? 00:00:00 /usr/bin/dockerd –registry-mirror=docker -v
systemctl start docker
验证 docker 是否安装成功并在容器中执行一个测试的镜像
docker run ubuntu echo hello dockerdocker run nginx
docker run -p 8080:80 -d nginx
[root@test3 share]# docker cp index.html
[root@test3 share]# docker commit -m ‘fun’ d0e976512485 nginx-fun删除镜像
docker rmi IMAGE ID
查看镜像
docker images
docker ps -a小结
命令 | 用途 |
docker pull | 获取image |
docker build | 创建image |
docker images | 列出image |
docker run | 运行container |
docker ps | 列出container |
docker rm | 删除container |
docker rmi | 删除image |
docker cp | 在host 和container之间拷贝文件 |
docker commit | 保存改动为新的image |
Dockerfile语法
FROM alpine:latest
MAINTAINER hsiehchou CMD echo ‘hello docker’touch Dockerfile
++++++++++++++++++++++++++++++++++++++++
FROM ubuntu MAINTAINER hsiehchou RUN sed -i ‘s/archive.ubuntu.com/mirros.ustc.edu.cn/g’ /etc/apt/sources.list RUN apt-get update RUN apt-get install -y nginx COPY index.html /var/www/html ENTRYPOINT [“/usr/sbin/nginx”, “-g”, “daemon off;”]前台运行 EXPOSE 80docker build -t hsiehchou/hello-nginx .
docker run -d -p 80:80 hsiehchou/hello-nginx
小结
命令 | 用途 |
FROM | base image |
RUN | 执行命令 |
ADD | 添加文件 |
COPY | 拷贝文件 |
CMD | 执行命令 |
EXPOSE | 暴露端口 |
WORKDIR | 指定路径 |
MIANTAINER | 维护者 |
ENV | 设定环境变量 |
ENVRYPOINT | 容器入口 |
USER | 指定用户 |
VOLUME | mount point |
镜像分层
Dockerfile中的每一行都产生一个新层
Volume
提供独立于容器之外的持久化存储
docker run -d –name nginx -v /usr/share/nginx/html nginx
docker exec -it nginx /bin/bash
docker run -v $PWD/html:/usr/share/nginx/html nginx
++++++++++++++++++++++++++++
docker create -v $PWD/data:/var /mydata –name data_container ubuntudocker run -it –volumes-from data_container ubuntu /bin/bash
mountRegistry
镜像仓库
术语
English | 中文 |
host | 宿主机 |
image | 镜像 |
container | 容器 |
registry | 仓库 |
daemon | 守护程序 |
client | 客户端 |
docker search whalesay
docker pull docker/whalesay docker push myname/whalesay国内的一些仓库
daocloud 时速云 aliyun[root@test3 dockerfiler2]# docker run docker/whalesay cowsay Docker你好!
docker tag docker/whalesay hch/whalesay
curl -L -m) > /usr/local/bin/docker-compose
docker-compose.yml常用命令
命令 | 用途 |
build | 本地创建镜像 |
command | 覆盖缺省命令 |
depends_on | 连接容器 |
ports | 暴露端口 |
volumes | 卷 |
image | pull镜像 |
docker-compose命令
命令 | 用途 |
up | 启动服务 |
stop | 停止服务 |
rm | 删除服务中的各个容器 |
logs | 观察各个容器的日志 |
ps | 列出服务相关的容器 |
docker基本命令
docker ps :查看正在运行的容器
docker images:查看现有的镜像 docker logs: 查看某个容器的日志 docker run: 运行某个容器 docker inspect:查看某个容器 docker exec:进入某个容器 docker start/stop:启动或者停止某个容器[root@test3 hadoop-docker]# touch Dockerfile
[root@test3 hadoop-docker]# ll total 0 -rw-r–r– 1 root root 0 Feb 27 19:18 Dockerfile [root@test3 hadoop-docker]# vim DockerfileFROM ubuntu:14.04
MAINTAINER hsiehchou
WORKDIR /root
# install openssh-server, openjdk and wget
RUN apt-get update && apt-get install -y openssh-server openjdk-7-jdk wget
# install hadoop 2.7.2
RUN wget https://github.com/kiwenlau/compile-hadoop/release/download/2.7.2/hadoop-2.7.2.tar.gz && \
tar -zxvf hadoop-2.7.2.tar.gz && \
mv hadoop-2.7.2 /usr/local/hadoop && \
rm hadoop-2.7.2.tar.gz
# set environment variable
ENV JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd-64
ENV HADOOP_HOME=/usr/local/hadoop
ENV PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
# ssh without key
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -p '' && \
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
RUN mkdir -p ~/hdfs/namenode && \
mkdir -p ~/hdfs/datanode && \
mkdir $HADOOP_HOME/logs
COPY config/* /tmp/
RUN mv /tmp/ssh_config ~/.ssh/config && \
mv /tmp/hadoop-env.sh /usr/local/hadoop/etc/hadoop/hadoop-env.sh && \
mv /tmp/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml && \
mv /tmp/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml && \
mv /tmp/mapred-site.xml $HADOOP_HOME/etc/hadoop/mapred-site.xml && \
mv /tmp/yarn-site.xml $HADOOP_HOME/etc/hadoop/yarn-site.xml && \
mv /tmp/slaves $HADOOP_HOME/etc/hadoop/slaves && \
mv /tmp/start-hadoop.sh ~/start-hadoop.ssh && \
mv /tmp/run-wordcount.sh ~/run-wordcount.sh
RUN chmod +x ~/start-hadoop.sh && \
chmod +x ~/run-wordcount.sh && \
chmod +x $HADOOP_HOME/sbin/start-dfs.sh && \
chmod +x $HADOOP_HOME/sbin/start-yarn.sh
# format namenode
RUN /usr/local/hadoop/bin/hdfs namenode -format
CMD ["sh", "-c", "service ssh start: bash"]