docker的安装与基本操作

我们以centOS7为例,讲解一下docker的安装与简单操作

安装与启动

#安装
yum -y install docker
#升级内核
yum -y updatedocker
/etc/init.d/docker start
#加入开机启动,修改配置文件/etc/sysconfig/docker
chkconfig docker on
#启动docker服务
service docker start
#基本信息查看
docker version # 查看docker的版本号,包括客户端、服务端、依赖的Go等
docker info # 查看系统(docker)层面信息,包括管理的images, containers数等

镜像获取

# 搜索镜像
docker search <image>
# 下载镜像(从registry中获取),当镜像仓库链接不成功时,可以指定获取镜像的路径.
docker pull <image>  或 docker pull daocloud.io/library/centos:latest
# 查看镜像 
    docker images: # 列出images
    docker images -a # 列出所有的images(包含历史)
    docker rmi  <image ID>: # 删除一个或多个image

容器操作

# 使用镜像创建容器
docker run -it --name volume-test1 -h nginx(主机名) 
docker run -i -t volume-test1  /bin/bash # 创建一个容器,让其中运行 bash 应用,退出后容器关闭
#创建一个名称centos_aways的容器,自动重启
# --restart参数:always始终重启;on-failure退出状态非0时重启;默认为,no不重启

# 查看容器
    docker ps :列出当前所有正在运行的container
    docker ps -l :列出最近一次启动的container
    docker ps -a :列出所有的container(包含历史,即运行过的container)
    docker ps -q :列出最近一次运行的container ID

# 再次启动容器
    docker start/stop/restart <container> #:开启/停止/重启container

#进入正在运行的docker容器
    docker exec -it [container_id] /bin/bash
    docker run -i -t -p <host_port:contain_port> #:映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

# 删除容器
    docker rm <container...> #:删除一个或多个container
    docker rm `docker ps -a -q` #:删除所有的container
    docker ps -a -q | xargs docker rm #:同上, 删除所有的container

#容器资源限制
-m 1024m --memory-swap=1024m  # 限制内存最大使用(bug:超过后进程被杀死)
--cpuset-cpus="0,1"           # 限制容器使用CPU
-p 92:80   #端口映射

#容器随系统自启动

docker run --restart=always nginx

*no – 默认值,如果容器挂掉不自动重启
on-failure – 当容器以非 0 码退出时重启容器
同时可接受一个可选的最大重启次数参数 (e.g. on-failure:5).
always – 不管退出码是多少都要重启*

docker run -itd --name test01 -p IP:sport:dport  -m 1024m --memory-swap=1024m --cpuset-cpus="0,1" --restart=always <image ID> 
docker exec -it test01 bash  # 进入容器也可以用exec命令

持久化容器与镜像

#通过容器生成新的镜像
docker commit <container> [repo:tag] # 将一个container固化为一个新的image,后面的repo:tag可选。

#持久化容器
 docker export <CONTAINER ID> > /tmp/export.tar
#持久化镜像

 docker save 镜像ID > /tmp/save.tar

#导入持久化容器
cat /tmp/export.tar | docker import - export:latest

#导入持久化镜像
docker load < /tmp/save.tar

#对image打tag
docker tag daa11948e23d load:tag

export-import与save-load的区别

导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚。(可以执行docker tag 来回滚之前的层)。

其他命令

docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
    docker inspect $CONTAINER_ID #docker inspect <image|container> 查看imagecontainer的底层信息
    docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
    docker build -t repo[:tag] 同上,可以指定repo和可选的tag
    docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
    docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到

总结

docker在不同操作系统下安装存在一些差异,总的来说对差别不大,为了学习大家可以在ubuntu下安装docker,镜像采用centOS的。

猜你喜欢

转载自blog.csdn.net/wj8023/article/details/75220101