Docker入门(CentOS7)
1、docker安装
yum -y install bash-completion #tab键补齐包
yum install net-tools -y
yum -y install wget
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
[root@docker ~]# yum install docker-ce -y #安装Docker
[root@docker ~]# systemctl start docker.service
[root@docker ~]# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@docker ~]# docker info|version #查看docker基本信息和版本
[root@docker ~]# docker search cenos #搜索cenos的docker镜像
[root@docker ~]# vi /etc/docker/daemon.json #配置docker镜像下载加速使用国内docker镜像源
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@localhost ~]# systemctl restart docker.service #配置完重启docker使配置生效
2、docker的容器管理
docker run -d -p 80:80 nginx
run(创建并运行一个容器)
-d 放在后台
-p 端口映射
-v 源地址(宿主机):目标地址(容器)
docker stop CONTAINER_ID #停止容器
docker kill container_name #杀死容器
[root@docker ~]# docker pull centos:6.8 #下载docker镜像(不指定版本,默认会下载最新版)
[root@docker ~]# docker images #查看已下载的docker镜像
[root@docker ~]# docker run -it centos:6.8 /bin/bash #启动一个容器,不指定容器名docker将随机分配一个容器名
[root@docker ~]# docker run -it --name centos_sshd centos:6.8 /bin/bash #启动一个容器并指定容器名为centos_sshd
[root@docker ~]# docker ps -a #查看docker容器状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaf08454395c centos:6.8 "/bin/bash" 2 minutes ago Up 2 minutes centos6.8
[root@docker ~]# docker inspect centos_sshd|eaf08454395c #查看容器的配置信息
[root@docker ~]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' centos_sshd #查看容器IP
[root@docker ~]# docker exec -it centos6.8|eaf08454395c /bin/bash #进入容器(指定容器名和容器id都可以)
[root@docker ~]# docker attach centos6.8|eaf08454395c /bin/bash #进入容器(使用同一个终端)
ctrl + p再按ctrl + q退出容器并返回宿主机
[root@docker ~]# docker rm -f eaf08454395c #删除一个容器
[root@docker ~]# docker rm -f `docker ps -a -q` #批量删除容器
注意:docker容器内的第一个进程必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!
3、制作容器镜像
[root@aa30c84f20b9 /]# yum install openssh-server -y
[root@aa30c84f20b9 /]# yum install httpd -y
[root@aa30c84f20b9 /]# /etc/init.d/sshd start #初始化ssh服务并生成密钥对,否则不能ssh连接
[root@localhost ~]# docker commit aa30c84f20b9 centos_sshd_httpd:v1 #制作一个容器镜像
sha256:e8ea675ba1d002de5019d743281c052130c17cc9feedda4ab839b9bf262847e2
[root@docker ~]# docker commit --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
容器id或容器名 新的镜像名字[:版本号可选]
[root@6f15becdbbd2 /]# cat init.sh
#!/bin/bash
echo "123456"|passwd --stdin root
/etc/init.d/httpd start
/usr/sbin/sshd -D
[root@docker ~]# docker run -d -p 80:80 -p 1022:22 --name centos_sshd_httpd centos_sshd_httpd:v1 /init.sh #通过脚本同时启动容器中的多个服务
-d:放在后台运行
-p:端口映射(宿主机端口:容器的端口,--name:设置容器名)
[root@docker ~]# docker save centos_sshd_httpd >centos_ssh_httpd.tar.gz #保存容器镜像
[root@docker ~]# docker image rm -f centos_sshd_httpd #删除镜像
[root@docker ~]# docker image load -i centos_ssh_httpd.tar.gz #导入镜像
0f0fd98df580: Loading layer [==================================================>] 128.6MB/128.6MB
Loaded image: centos_sshd_httpd:v1
4、dockerfile自动构建docker镜像
dockerfile主要组成部分:
基础镜像信息 FROM:centos:6.8
制作镜像操作指令 RUN yum install openssh-server -y
容器启动时执行指令 CMD ["/bin/bash"]
dockerfile常用指令:
FROM 这个镜像的妈妈是谁?(指定基础镜像)
LABEL 告诉别人,谁负责养它?(指定维护者信息,可以没有)
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(复制文件,会自动解压)
WORKDIR 我是cd,今天刚化了妆(设置当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)(-P 随机端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)(容易被替换)
使用ADD的时候,ADD init.sh /init.sh(init.sh文件必须放在Dockerfile同级目录下!!!)
dockerfile其他指令:
COPY 复制文件 (复制文件,不会自动解压)
ENV 环境变量
ENTRYPOINT 容器启动后执行的命令(无法被替换,启容器的时候指定的命令,会被当成参数)
[root@docker dockerfile]# vi Dockerfile
FROM centos:6.8
RUN yum install openssh-server -y
RUN /etc/init.d/sshd start
RUN yum install httpd -y
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]
[root@docker dockerfile]# vi init.sh
#!/bin/bash
/etc/init.d/httpd start
echo "123456"|passwd --stdin root
/usr/sbin/sshd -D
[root@docker dockerfile]# ll
total 8
-rw-r--r--. 1 root root 152 Mar 20 10:27 Dockerfile
-rw-r--r--. 1 root root 91 Mar 20 11:02 init.sh
[root@docker ~]# docker build -t centos_sshd_httpd:v2 . #利用Dockfile文件创建镜像,. 表示Dockerfile文件在当前目录
---> d4ba7df51af6
Step 3/6 : RUN /etc/init.d/sshd start
---> Running in 547cad2caecc
Generating SSH2 RSA host key: [ OK ]
Generating SSH1 RSA host key: [ OK ]
Generating SSH2 DSA host key: [ OK ]
Starting sshd: [ OK ]
Removing intermediate container 547cad2caecc
---> a3815ee38b0c
[root@docker ~]# docker run -d -p 80:80 -p 1022:22 --name centos_dockerfile centos_sshd_httpd:v2
[root@docker dockerfile]# vi init.sh #设置root密码从环境变量中读入
#!/bin/bash
/etc/init.d/httpd start
echo "$password"|passwd --stdin root
/usr/sbin/sshd -D
[root@docker ~]# docker run -d -p 81:80 -p 2022:22 --name centos_docker -e password=test123 centos_sshd_httpd:v2 #设置root密码为test123
注意:
用Dockerfile文件创建的镜像不能从宿主机ssh登陆,否则会有以下错误
[root@docker dockerfile]# ssh 10.47.39.100 -p 1022
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:HoZcYKgbOtzM70y2uPURVaSkKaqPZNd6lG5GQjAjorU.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:3
RSA host key for [10.47.39.100]:1022 has changed and you have requested strict checking.
Host key verification failed.
[root@docker ~]# docker run -d -p 80:80 -p 1022:22 -h Nginx -e password=test123 --name centos6.8 centos_sshd_httpd:v2 #-h:指定主机名;--name:指定容器名
5、docker-compose(单机版的容器编排工具)
yum install -y python2-pip(需要epel源)
pip install docker-compose
##docker-compose配置文件详解
http://www.jianshu.com/p/2217cfed29d7
cd my_wordpress/
vi docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
volumes:
- /oldboy:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
#启动
docker-compose up
#后台启动
docker-compose up -d
6、重启docker服务,容器全部退出的解决办法
方法一:docker run --restart=always
方法二:"live-restore": true
docker server配置文件/etc/docker/daemon.json参考
{
"registry-mirrors": ["http://b7a9017d.m.daocloud.io"],
"insecure-registries":["10.0.0.11:5000"],
"live-restore": true
}
docker + k8s的博客文章
http://www.cnblogs.com/CloudMan6/p/6693772.html
https://github.com/feiskyer/kubernetes-handbook/blob/master/zh/SUMMARY.md
https://github.com/feiskyer/kubernetes-handbook
k8s安装方法:
go源码编译安装
二进制安装 (比较适合)
yum 安装 1.5 (比较适合)
kubeadm(容器化部署,)
minikube(学习k8s)
docker学习链接:
第一篇:
http://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html
第二篇:
http://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html
第三篇:
http://www.cnblogs.com/zhenyuyaodidiao/p/6500897.html
第四篇:
https://www.cnblogs.com/breezey/p/6553738.html
第五篇:
http://www.cnblogs.com/breezey/p/6556913.html
Docker入门(CentOS7)的更多相关文章
- Centos7——docker入门(笔记)
docker 入门(笔记) 一.Docker是什么? 官方原话: Docker provides a way to run applications securely isolated in a co ...
- Docker(一):Docker入门教程
如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...
- 实用的Docker入门
1 Docker概述 Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用.首先来看Docker的架构图: 理解其中几个概念: Client(Docker ...
- Docker入门(三)使用Docker Compose
Compose介绍 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 ...
- 这可能是最为详细的Docker入门吐血总结
这可能是最为详细的Docker入门吐血总结 https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html Docker是什么? 在计算机技术日新 ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- 学习Mysql过程中拓展的其他技术栈:Docker入门介绍
一.Docker的介绍和安装 1. Docker是什么 百度百科的介绍: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linu ...
- 【实战】Docker 入门实战一:ubuntu 和 centos 安装Docker
Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...
- Docker(一):Docker入门教程
如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...
随机推荐
- topcoder srm 692 div1 -23
1.给定一个带权有向图.选出一些边满足使得任意两点可相互到达的前提下使得选出的边的权值的最大最小差值最小. 思路:二分答案,然后枚举权值的范围判断是否可行. #include <stdio.h& ...
- python 函数,闭包
假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print(bi ...
- Python3 tkinter基础 Button command 单击按钮 在console中打印文本
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- IDEA入门及maven配置
idea基本使用 下载安装 idea下载地址 激活方法 上面的失效使用这个 配置SDKs和编译版本 选择jdk 我是主要用于Java开发,因此配置JDK8 配置编码 其他配置 个人配置主题等 注意 与 ...
- vue中find函数
let obj = this.role.find(v => v.code === res.company.role)循环 data对象中的role数组 ,每个数组元素用v代替,code为他的键, ...
- 洛谷p1732 活蹦乱跳的香穗子 二维DP
今天不BB了,直接帖原题吧 地址>>https://www.luogu.org/problem/show?pid=1732<< 题目描述 香穗子在田野上调蘑菇!她跳啊跳,发现 ...
- Ubuntu14.04下 升级 cmake
参考: How to install cmake 3.2 on ubuntu 14.04? Ubuntu14.04下升级cmake 1.通过PPA安装: $ sudo apt-get install ...
- usart2 重映射
今天拾起闲置很久的灰机,测试发现nrf2401坏掉,重新淘宝.还发现机上搭载的usart1坏掉,换成usart2,发现端口被电机占用,重映射到PD5,PD6 关键是后面两句不要忘记了 RCC_APB1 ...
- 利用angularjs完成注册表单
ng-init="username = 'first'"设置初始显示first字段 ng-class="{'error':signUpForm.username.$inv ...
- python3使用pymysql模块,连接mysql数据库,实现新增、查询和更新操作
1.环境数据准备: python3环境.pymysql模块 mysql数据库:本次代码中用到的数据库为本地的testdb数据库,user表(表字段比较简单,只有主键id,手机号mobile,密码pas ...