安装Docker
- 查看内核版本:uname -r centos的内核版本要高于3.1.0
- yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine #卸载以前旧的版本
- 安装镜像仓库:yum install -y yum- utils
- 安装需要的软件包:yum install -y yum-utils device-mapper-persistent-data lvvm2
- yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#设置镜像仓库地址:国外的较慢这里用阿里云的镜像地址
- 安装yum安装的索引:yum makecache fast
这样可以提升安装docker的速度
- 安装:yum install docker-ce docker-ce-cli containerd.io
- 在后台启动服务:systemctl start docker
ps -eflgrep docker
- 验证:docker version
- 检测是否安装成功:docker run hello-world
- https://promotion.aliyun.com/ntms/act/kubernetes.html
#阿里云
镜像加速器地址:https://0naywxvd.mirror.aliyuncs.com
要写自己的
-
配置镜像加速器:
- sudo mkdir -p /etc/docker #创建目录
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0naywxvd.mirror.aliyuncs.com"]
}
EOF
#脚本
sudo systemctl daemon-reload #重启服务
sudo systemctl restart docker #启动服务
- 检测镜像加速器是否安装成功:docker run hello-world
长用命令:systemctl restart docker #重启docker
systemctl status docker #查看docker状态
systemctl enable docker #设置开机自启
docker info #docker概要说明
docker cp --help #查看具体帮助命令
docker pull redis
docker --help #查看docker全部帮助命令
镜像命令:
docker images挪列出本地的镜像
-a #列出本地所以镜像
-q #只显示镜像id 也可-ap同时使用
REPOSITORY #镜像仓库源
TAG #镜像的标签
IMAGE ID #镜像id
CREATED #镜像创建时间
SIZE #镜像大小
查看的是镜像仓库的
docker search hello-world #搜索某个镜像
docker search --limit 5 redis #拉取五条redis镜像不输默认25条
docker pull hello-world 下载hello-world镜像,不输版本默认最新
docker pull redis:6.0.8
docker system df #查看镜像容器所占空间
docker rmi +镜像名或镜像id #删除那个镜像
docker rmi -f #如果那个镜像在那个里面正在运行无法删除可加-f强制删除
docker rmi -f $(docker images -ap) #删除所有镜像
虚悬镜像:仓库名和id都是<none>的镜像一般没什么用建议删除
容器命令
有镜像才能创建容器
docker run[OPTIONS]IMAGE[COMMAND][ARG...]
用镜像生成一个容器
OPTLONS #参数 IMAGE #镜像名称 COMMAND#命令 ARG….#其它参数
docker run -it ubuntu /bin/bash #创建并进入docker容器(ubuntu)
docker ps
docker ps -a #查看隐藏容器
docker ps -n 3
docker run -it –name=myu1 ubuntu bash #给容器启个名字如果不加系统自动分配
exit 退出容器但容器会停止
ctrl+p+q 退出容器不停止
docker start 容器id或者容器名 #启动已停止运行的容器
docker restart 容器id或者容器名 #重启容器
docker stop 容器id或者容器名 #停止容器
docker kill 容器id或者容器名 #强行停止容器
docker rm 容器id或者容器名 #删除容器
要先停止在删除
docker rm -f 容器id或者容器名 #不停止强行删除
docker rm -f$(docker ps -a -q) #删除所有正在运行的容器
docker run -d redis:6.0.8 #像redis和ngis让其在后台运行即可
docker top 容器id或容器名 #查看容器内运行进程
每一个容器都是一个缩小版的liunx环境
docker exec -it 容器id /bin/bash #进入容器
docker attach 容器id #进入容器
attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
用快捷键两个都不会停止
大多数时候用exec
docker cp 容器ID:容器内路径 目的主机路径
export 导出容器的内容留作为一个tar归档文件[对应import命令]
docker export 容器ID>文件名.tar
比如:docker export ddb1ae909a66 > abcd.tar
cat 文件名.tar| docker import-镜像用户/镜像名:镜像版本号
#import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat abcd.tar docker import - atguigu/ubuntu: 3.7
安装vim
apt-get update #安装包的管理工具
apt-get -y install vim #安装vim
需在容器外操作
docker commit提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述信息"-a="作者"器ID 要创建的目标镜像名:[标签名]
如:docker commit -m="vim cmd add ok” -a="zzyy” fcbfa3e8efc5 atguigu/myubuntu: 1.3
- 镜像的结构是怎样的?
镜像中包含了应用程序所需要的运行环境、函数库、配置、以及应用本身,逐层构建而成。
- Dockerfile是做什么的?
Dockerfile就是利用固定的指令来描述镜像的构建过程,这样Docker才可以依次来构建镜像
- 构建镜像的命令是什么?
docker build-t镜像名 Dockerfile目录
- docker create命令从 Docker 映像创建一个全新的容器。但不会立即运行它。
搭建准备工作
-
创建网络:
- docker network create –-driver beidge –subnet= 192.168.31.0/24 mynet
--driver 指定网络模式beidge为桥接
--subnet 指定子网
- 进入容器:docker run -d -p 22/tcp --privileged=true --name hadoop1 hostname hadoop1 –net mynet --ip 192.168.31.2 id /usr/sbin/init
- yum install -y vim openssh-server openssh-clients passwd net-tools telnet #安装需要的包
- inspect
- ##创建自指定网断和网关
[root@server1 ~]# docker network create -d bridge --subnet 172.30.0.0/24 --gateway 172.30.0.1 mynet2
--subnet 子网地址
-d –driver #指定网络模式 bridge桥接模式
--gateway #路由
--privileged=true #添加root权限
-
-v 容器数据卷挂载:
-v /sys/fs/cgroup:/sys/fs/cgroup #解决mysql启动不了的问题
-v /etc/localtime:/etc/localtime:ro #让宿主机的时钟与容器同步,避免时区问题
5. docker cp 宿主机文件 容器名或容器id:容器目录
#将宿主机文件拷贝到容器
- 将容器中的文件拷贝到宿主机: docker cp 容器名:容器内的文件路径 宿主机目录
- Docker volume ls #查看容器数据卷
- Docker volume rm 卷名
- Docker volume create 数据卷名称 #创建容器数据卷
- Docker volume inspect 数据卷名 #查看详情
- 重启ssh服务:systemctl restart sshd
- netstat -ano lgrep 22 #开放端口
- docker network inspect #查看详情命令
- docker commit -a “xiaodeng” -m “” 容器id bs1 #容器打包镜像
-a 作者
-m 描述
16. docker save 镜像id >hadoop.tar.gz #打包成一个文件
17. docker load -i e:\docker\hadoop.tar.gz #将镜像恢复
将镜像上传到阿里云镜像仓库:
登陆:docker login --username=dengqiweng registry.cn-hangzhou.aliyuncs.com
改名:docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/dengqiweng/myjingxiaong:[镜像版本号]
推送:docker push registry.cn-hangzhou.aliyuncs.com/dengqiweng/myjingxiaong:[镜像版本号]
Docker file:
FROM centos:7#安装JDK
RUN mkdir -p /opt/software && mkdir -p /opt/service
ADD jdk-8u212-linux-x64.tar.gz /opt/service
#安装语言包
RUN yum -y install kde-l10n-Chinese glibc-common vim
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf-8
RUN echo "LANG=zh_CN.UTF-8" >>/etc/locale.conf
#解决login环境变量失效问题
RUN touch /etc/profile.d/my_env.sh
RUN echo -e "export LC_ALL=zh_CN.UTF-8\nexport JAVA_HOME=/opt/service/jdk1.8.0_212\nexport PATH=\$PATH:\$JAVA_HOME/bin" >>/etc/profile.d/my_env.sh
#安装ssh服务
#更换国内阿里云yum源
RUN curl -o /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/Centos-Base.repo
RUN yum makecache
#安装sshd
RUN yum install -y openssh-server openssh-clients vim net-tools lrzsz
RUN sed -i '/^HostKey/'d /etc/ssh/sshd_config
RUN echo 'HostKey /etc/ssh/ssh_host_rsa_key'>>/etc/ssh/sshd_config
#生成 ssh-key
RUN ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
#更改root用户名登陆密码为
RUN echo 'root:123456' | chpasswd
#声明22端口
EXPOSE 22
#容器运行时启动sshd
RUN mkdir -p /opt
RUN echo '#!/bin/bash' >> /opt/run.sh
RUN echo '/usr/sbin/sshd -D'>> /opt/run.sh
RUN chmod +x /opt/run.sh
CMD ["/opt/run.sh"]
注意:在windoes上要将文件后缀名清除