docker基础教程

下载镜像
docker pull mysql


从dockerpull社区下载镜像
docker pull dl.dockerpoll.com:5000/ubuntu


创建一个容器运行bash应用
docker run -t i ubuntu /bin/bash


列出本地镜像
docker images


保存镜像
docker commit fc1dfgt5d23423d3 sshd:ubuntu


给镜像添加一个ubuntu:lastest标签
docker tag al.dockerpool.com:5000/ubuntu:lastest ubuntu:lastest


查看镜像的详细信息
docker inspect 5506de2b43b


搜索镜像
docker search mysql


删除镜像
docker rmi dl:dockerpool.com:5000/ubuntu


根据标签删除镜像
docker rmi mysql:lastest


强制删除镜像
docker rmi -f ubuntu


列出本地上存在的所有容器
docker ps -a


删除容器
docker rm e81(e81是docker ps -a 里的container id)


基于已有的镜像创建容器
docker run -ti ubuntu:14.04 /biu/bash


上传镜像:在docukerhun网站注册后可上传,不过要求输入账号密码
docker tag test:lastest user/test:lastest
docker push user/test:lastest


==============================================================


启动一个bash 终端,允许用户进行交互,添加-d参数在后台运行容器
docker run -t i ubuntu:14.04 /bin/bash


获取容器输出的信息
docker log


终止一个运行中的容器
docker stop ce5


强行中止运行中的窗口(SIGKILL信号)
docker kill ce5


启动终止的容器
docker start ce5


进入容器操作(得先docker start 容器id)
docker attach 容器名
或者:
docker exec -ti 容器id /bin/bash
或者用nsenter工具


停止容器
docker stop 容器id


删除一个运行中的容器
docker rm -f ce5


导入和导出容器(见书上或者百度)
导入:docker export ce5 >test_for_run.tar
到处:cat test_for_run.tar | sudo docker import - test/ubuntu:v1.0


===========创建和使用docker仓库(见书或百度)=========================


=======数据卷===================================


指定挂载一个本地已有目录到容器中去作为数据卷(-v参数)
sudu docker run -d -P --name web -v /src/web:app:/opt/webapp training/webapp python app.py


创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载 到/dbdata
docker run -ti -v /dbdata --name dbdata ubuntu


docker run --it --volumes-from dbdata --name db1 ubuntu


备份数据卷和恢复数据卷见资料


======网络基础配置=============================


-p指定端口
-P随机端口


把本地的5000端口映射到容器的80
docker run -d -p 5000:80 training/webapp python python.py


查看端口映射配置
docker port docker-name 5000


使用--name标记为容器自定义命名
docker run -d -P web training/webapp python python.py


容器互联见资料


======使用dockerfile创建镜像(见资料)===================


======创建ssh镜像===========================================


先下载ubuntu容器
(这个能下载)docker pull daocloud.io/library/ubuntu:trusty-20160802
docker pull daocloud.io/library/ubuntu
docker pull daocloud.io/library/centos
docker pull ubuntu  这个有时候好用


首先,来创建一个容器(ubuntu)
docker run -ti ubuntu:14.04 /bin/bash


修改root密码
echo 'root:123456' | chpasswd 




这里有个问题就是把vi编辑器换成vim需要执行以下操作
一.执行命令 sudo apt-get remove vim-common
二.执行命令 sudo apt-get install vim
如果apt-get安装不了得先更新apt-get update才好用apt-get upgrade



然后在容器中安装ssh服务
apt-get install openssh-server


配置软件源
apt-get update


也可以把软件源替换为163的
在容器内创建/etc/apt/sources.list.d/163.list
vi /etc/apt/sources.list.d/163.list
添加下列内容到文件中
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
之后重新执行apt-get update就可以


要正常启动SSH服务,需要/var/run/sshd存在,手动创建它,并启动服务
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &


此时查看容器的22端口,已经处于监听状态
netstat -tunlp








修改SSH服务的安全登录配置,取消pam登录限制
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
(有时候上面那个好用,有时候下面这个好用)发现容器立即关闭了连接,原因是容器的ssh使用了pam_loginuid.so模块,我们把它关掉:
sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
上述命令的意思是:在/etc/pam.d/sshd文件里注释掉"session    required     pam_loginuid.so"这一行。










在root用户目录下创建.ssh目录,并复制需要登录的公钥信息


(一般为本地主机用户目录下的.ssh/id_rsa.pub文件,可由ssh-keygen -t rsa命令生成,
在远端客户端机器(即,非容器机器)执行命令 ssh-keygen -t rsa 生成rsa的公私密钥对,然后把公钥的信息拷贝到运行ubuntu容器机器的授权文件中:
mkdir /root/.ssh
vi /root/.ssh/authorized_keys # 粘贴客户端的公钥信息)


到authorized_keys 文件中
ssh-keygen -t rsa
然后把里面的内容,按照上面的操作
mkdir root/.ssh
vi /root/.ssh/authorized_keys






ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCz0J91r/bHbMSrBHi7DSU6UIANO8fag6wjUZ0bdCKgijK2APOPftT+J8HVlubda+1EWeAy5m99oudT7Ubi0Bg68uYbM+iyK7ecE99VQEEAndcbIELNmY8EkrSGT+w0xF6j+1JM5P/GCHjzZgEjUwemZjxhhN3K3GM9Mz50t6QLDnfDuBqaPw6RqL4f4+YFGiYKxuOQdzo/97iZoCNut6+RFf6z4qr6ao6ZXeH2qel52F4IjJJ90uaI1j81sFclPE1ZP3Rg7q1vlbBpxEv0fLyeZu7hdxH7GPgIYtwJSsPBJiymAVs1kTbeBF+4ZV8RFuuRMrCASllxj4R7hfYrisJp root@iZ25xepzd49Z














创建自动启动ssh服务的可执行文件run.sh,并添加可执行权限
vi /run.sh
chmod +x run.sh


run.sh脚本内容如下
#!/bin/bash
/usr/sbin/sshd -D


最后,退出容器
exit


使用docker commit来保存成新的sshd:ubuntu镜像
docker commit fc1 sshd:ubuntu


使用镜像
docker run -p 10022:22 -d sshd:ubuntu /run.sh


启动成功后,查看容器的详细信息
docker ps


这时可以连接容器了
ssh 192.168.1.200 -p 10022




============
修改root密码
passwd root








========下面来一段自己测试成功的sshd登录==============


下载ubuntu镜像


生成容器,进入容器


apt-get update
apt-get install openssh-server
apt-get install vim


service ssh start


vi /etc/ssh/sshd_config
PermitRootLogin yes"-->保存,修改成功。


service ssh restart


然后外网就能连接成功



































什么是Docker Docker 最初是dotCloud 公司创始人Solomon Hykes 在法国期间发起的一个公司内部项目, 它是基于dotCloud 公司多年云服务技术的一次革新,并于2013 年3 月以Apache 2.0 授权 协议开源,主要项目代码在GitHub 上进行维护。Docker 项目后来还加入了Linux 基金会, 并成立推动开放容器联盟(OCI)。 Docker 自开源后受到广泛的关注和讨论,至今其GitHub 项目已经超过4 万6 千个星标和一 万多个fork。甚至由于Docker 项目的火爆,在2013 年底,dotCloud 公司决定改名为 DockerDocker 最初是在Ubuntu 12.04 上开发实现的;Red Hat 则从RHEL 6.5 开始对 Docker 进行支持;Google 也在其PaaS 产品中广泛应用DockerDocker 使用Google 公司推出的Go 语言进行开发实现,基于Linux 内核的 cgroup,namespace,以及AUFS 类的Union FS 等技术,对进程进行封装隔离,属于操作 系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容 器。最初实现是基于LXC,从0.7 版本以后开始去除LXC,转而使用自行开发的 libcontainer,从1.11 开始,则进一步演进为使用runC 和containerd。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极 大的简化了容器的创建和维护。使得Docker 技术比虚拟机技术更为轻便、快捷。 下面的图片比较了Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件 后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程 直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比 传统虚拟机更为轻便。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值