docker基本命令及安装

Docker三大核心组件:
• Docker 镜像 - Docker images 
• Docker 仓库 - Docker registeries
• Docker 容器 - Docker containers 
私有库:
docker在国内没有服务器 
docker国内仓库:ali、网易蜂巢、daocloud
安装docker
# yum install docker   
启动docker
# systemctl start docker.service
# systemctl enable docker.service 
确定docker服务在运行
# docker version  
查看docker基本信息
# docker info   
 (只适用于官方源)
# docker search centos -s 100    (查看centos的镜像星大于100的)
# docker pull ....     (下载....)
下载sentos7的镜像
# docker pull daocloud.io/centos:7 
查看所有的镜像
# docker images   
运行容器并进入容器操作
# docker run -it daocloud.io/centos  /bin/bash
(-i 捕获标准输入输出   -t 分配一个终端或控制台 -d运行在后台)
创建一个容器但不进入容器
# docker create -it daocloud.io/centos:7 /bin/bash
rm 删除容器
rmi 删除镜像
删除一个或多个,多个之间用空格隔开
# docker rmi daocloud.io/library/mysql
# docker rmi ed9c93747fe1
强制删除:–force
如果镜像正在被使用中可以使用--force强制删除 
# docker rmi docker.io/ubuntu:latest --force
删除所有镜像:
# docker rmi $(docker images -q)
只查看所有镜像的id:
# docker images -q 
查看容器:
只查看运行状态的容器:
#docker ps

#docker ps -a
-a 查看所有容器
只查看所有容器id:
# docker ps -a -q
删除容器:
# docker rm 容器id或名称
根据格式删除所有容器:
# docker rm $(docker ps -qf status=exited)
运行一个 Docker 容器:
# docker run -it centos /bin/bash
如果执行成功,说明CentOS 容器已经被启动,并且应该已经得到了 bash 提示符。
-i 捕获标准输入输出
-t 分配一个终端或控制台
若要断开与容器的连接,并且关闭容器:
容器内部执行如下命令
[root@d33c4e8c51f8 /]#exit
重新启动docker
# docker start ...
重新进去容器
# docker attach id号
不进入容器在容器中创建一个文件
# docker exec elated_lovelace touch /testfile
如果只想断开和容器的连接而不关闭容器:
快捷键:ctrl+p+q
运行远程机器上的容器:
[root@master ~]# docker run -it 
-h test.up.com daocloud.io/centos:7
在其他窗口列出正在运行的容器:
[root@master ~]# docker ps
列出所有的容器(包括正在运行的容器和已经退出的容器):
[root@master ~]# docker ps -a
# docker ps -q 查找已运行的docker容器的ID
# docker ps -a -q 查找所有的docker容器的ID
列出最近一次启动的容器
# docker ps -l 
恢复容器内暂停的进程,与pause参数相对应
# unpause Unpause a paused container 
查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息
docker inspect id号
容器卷
# docker run -it -v /abc:/abc   1ae9
宿主机的目录:容器的目录
共享bc4181容器的卷:
# docker run -it --volumes-from bc4181 daocloud.io/library/centos:5 /bin/bash
删除容器
# docker rm trusting_newton
如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送 SIGKILL 信号给容器。
杀死所有running状态的容器
# docker kill $(docker ps -q)
查看容器内发生变化的文件
# docker diff 容器名称
实时输出容器的事件
# docker events
创建自己的镜像
1.将容器的文件系统打包成tar文件
第一种:
# docker export -o elated_lovelace.tar elated_lovelace

第二种:
# docker export 容器名称 > 镜像.tar

导入镜像归档文件到其他宿主机
# docker import elated_lovelace.tar elated_lovelace:v1

如果导入镜像时没有起名字,随后可以单独起名字(没有名字和tag),可以手动加tag:
# docker tag 镜像ID mycentos:7

2.将镜像打包
#docker save -o nginx.tar nginx
#docker load < nginx.tar

3.通过容器创建本地镜像
# docker commit -a ll -m ll b1cce61d2c19 ll:11
-a  制作者  -m  描述信息
4.通过docker file创建镜像
创建镜像所在的文件夹和Dockerfile文件 
命令: 
# mkdir 名字 
# cd 名字 
# vim Dockerfile 
# This is a comment 
FROM ubuntu:14.04 
MAINTAINER wing wing@localhost.localdomain
RUN apt-get update 
RUN gem install Sinatra

格式说明: 
每行命令都是以 INSTRUCTION statement 形式,就是命令+ 清单的模式。命令要大写,"#"是注解。 
FROM 命令是告诉docker 我们的镜像什么。 
MAINTAINER 是描述 镜像的创建人。 
RUN 命令是在镜像内部执行。就是说他后面的命令应该是针对镜像可以运行的命令。

# docker build -t wing/名字:v2 
部署私有仓库
1.拉取镜像
# docker pull daocloud.io/library/registry:latest

注:如果创建容器不成功,报错防火墙,解决方案如下
#systemctl stop firewalld
#yum install iptables*
#systemctl start iptables
#iptables -F
#systemctl restart docker

2.将宿主机端口映射到容器中去,容器的5000端口是不能更改的
# docker run -d -p 5000:5000 daocloud.io/library/registry 

3.进入到私有仓库容器中去
# docker exec -it a9a0dfaea6ad /bin/sh
/ # netstat -lnp

在上传前需要将镜像做个tag ,注明ip和端口 即:
# docker tag daocloud.io/library/mysql:latest 192.168.245.136:5000/daocloud.io/library/mysql:latest

4.在本机查看能否访问该私有仓库,看看状态码是不是200
# curl -I 127.0.0.1:5000

如果报错:

改/etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.137.17:5000'
注:红色IP为修改的部分

5.上传镜像到私有仓库
# docker push 192.168.245.136:5000/daocloud.io/library/mysql

报错:

6.如果上传镜像时发生以下错误:
http: server gave HTTP response to HTTPs client
方法1:
在"/etc/docker/"目录下,创建"daemon.json"文件。在文件中写入:
{ "insecure-registries":["192.168.245.136:5000"] }保存退出后,重启docker。问题解决

方法2:
报错:
[root@localhost~]#docker run -it mytest1 /bin/bash -d WARNING: IPv4 forwarding is disabled. Networking will not work.
解决:
[root@localhost/]#cat /etc/docker/daemon.json
{
"dns":["10.18.47.1","8.8.8.8","10.18.47.100"],
"live-restore": true
}
[root@localhost/]#cat /usr/lib/sysctl.d/99-docker.conf
fs.may_detach_mounts=1
net.ipv4.ip_forward=1

7.查看私有仓库里的所有镜像
# curl 192.168.245.136:5000/v2/_catalog

#vim /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS= --bip=172.18.42.1/16
#reboot

docker 130上:
#route add -net 172.18.0.0/16 gw 192.168.18.128

docker 128上:
#route add -net 172.17.0.0/16 gw 192.168.18.130

现在两台宿主机里的容器就可以通信了

</font> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值