Skip to content
罗明刚 edited this page Oct 1, 2022 · 2 revisions

*本文主要为个人在使用Docker过程中的常用命令和一些常见的问题

Docker启动

redhat7

设置自动启动:chkconfig docker on
启动Docker服务:/bin/systemctl start docker.service

ubuntu

docker自动补全

docker命令复杂,好多命令行选项都是前后相关的,目前docker命令自动补全主要使用基于python 语言开发的Dockercli,安装也cli非常方便,使用pip即可,pip install dockercli,一旦进入 cli命令行,则后续的命令不需要再加前缀docker。
使用:

$./dockercli
dockercli>ps -all

镜像获取

镜像获取在docker中叫docker pull,即镜像拉取。默认docker拉取latest的镜像,如果 不知到是否存在建议先search搜索一下看是否存在镜像

命令格式

docker pull [ [index.docker.hub][:80]/ ] <[latest][:tag]>

命令实例

从默认注册服务器获取

 docker pull   redhat

指定注册服务器

      docker pull  192.168.91.100:5000/ubuntu:luomg

本节其他相关资料

baseimage
oracle image
CentOS 6.5 Docker自制CentOS镜像

注册服务器

默认注册服务器

设定默认注册服务器

命令行指定注册服务器

查看注册服务器中的镜像

mirro服务器

Daocloud目前主要用于提供镜像下载加速功能,暂为发现提供上传功能 DaoMirror采用Docker官方镜像技术,结合国内CDN网络,为开发者提供透明和高速的Docker Hub镜像下载解决方案

docker命令行

docker选项

  • -a 指定更新的用户的信息
  • -m 指定提交注释
  • -h,--help 打印帮助信息
  • --add-registry=[]
  • --api-cors-header="" 设置远程调用域头。默认禁止。提供的url类似http:/foo,fttp://bar
  • -b,bridge="" 设定容器的的网络,桥接到一个已经存在的网络上面,默认为空,禁止桥接网络
  • --bip=""
  • -t 指定tag信息,e.g: -t="ubuntu/12.04:luomg"

命令

build

*从Dockerfile编译创建新的镜像,并返回ID,如果中途出错会返回,并暂存当前状态,再次启动从错误处开始,更多帮助:
*更多帮助信息:docker build --help

export contaner_id > file.tar 导出容器到本地文件,类似快照,sudo docker export 7691a814370e > ubuntu.tar

commit 基于某次提交改变镜像,并创建新的提交

images 列出拥有的镜像,e.g: docker images,显示列:仓库名 标签 ID号 提交时间 镜像大小

import 导入容器,e.g: cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

load *--input file.tar 载入文件到镜像

	*<	file.tar	

pull 从注册服务器抓取一个镜像或者repository

push 推送镜像到注册服务器

docker tag 5a81de6af14c luomg/upload01 #镜像命名格式 username/imagename:tagname

如果是自己搭建的registor要用如下的方式

docker tag org_image_name[:org_tag_name] registry_ip:registry_port/new_image_name[:new_tag_name]

docker login

docker push luomg/upload01:latest

rm 移除容器

rmi 移除本地镜像,移除镜像前必须移除依赖该镜像的所有容器

run 启动容器

-d 后台模式运行容器,并返回容器ID

-t Docker会分配一个为终端给容器并绑定到标准输入,实现交互模式

-v host_dir:contaner_dir 挂载数据到容器,

e.g sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app

-i 让容器的标准输入保持打开

save image:tag 导出镜像到本地, docker save -o ubuntu_12.04.tar.gz ubuntu:12.04

search "key" 从注册服务器搜索指定名称的镜像

端口映射

Dockerfile 使用Dockerfile编译镜像 docker build -t="ubuntu/12.04:luo" ./ #cat ./luo/Dockerfile #this is comment

指定基镜像

FROM ubuntu:12.04 MAINTAINER Docker luomgf luomgf@163.com #维护者信息 RUN apt-get -qq update #创建时执行安装 RUN apt-get -qqy install ruby ruby-dev RUN gem install sinatra

将物理主机中文件复制到docker /var/www

ADD add_myfile /var/www

向外部开放80端口

EXPOSE 80

默认容器启动后启动程序

CMD ["/usr/sbin/apachectl","-D","FOREGROUND"]

镜像

镜像的构建

1、从运行中的系统构建镜像,
	基于已有的镜像
	1.1、load
	load    --input file.tar        载入文件到镜像
            	<       file.tar
	1.2、impot 
	cat     ubuntu.tar      |       sudo    docker  import  -       test/ubuntu:v1.0
	自己构造符合fhs的rfs base image
	1.3、debootstrap[ubuntu],febootstrap[fedora]
		debootstrap trusty trusty > /dev/null
		tar -C trusty -c . | sudo docker import - trusty
	1.4、Scratch
		tar cv --files-from /dev/null | docker import - scratch
	1.5、纯手工打造
		a、将更目录下的的文件除proc  boot 拷贝到新目录,chroot进入目录,打为tar包-->生成image
		b、用现有的基础镜像save xxx.tar ,解压chroot进入,安装相关软件,再打包,再导入
            1.6、基于openvz导入
                    [openvz模版下载站点](https://openvz.org/Download/template/precreated)
                    [openvz模版下载站点-国内镜像](http://mirrors.ustc.edu.cn/openvz/)
                    [docker官网构建脚本](https://github.com/docker/docker/tree/master/contrib)
2、基于镜像服务器构建镜像
	2.1、从dockerhub.io
	2.2、从代理服务器构建镜像,如:DaoCloud
### 镜像推送
1、推送到中央服务器
	1.1、推送到docker hub
		http://m.blog.chinaunix.net/uid-20788636-id-5049772.html
	1.2、

私有仓库的构建
	创建
	docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry
	默认通过registry镜像来实现,且镜像挂载在容器的/tmp/registry目录,这个地方通过-v实现数据共享
	push
	docker push 104.131.173.242:5000/ubuntu_sshd_gcc_gerry:14.04
	pull
	docker pull 104.131.173.242:5000/ubuntu_sshd_gcc_gerry:14.04
	search
	curl http://104.131.173.242:5000/v1/search
	https问题
		修改Docker配置文件
		vim /etc/default/docker
		增加以下一行
		DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=104.131.173.242:5000"
		重启Docker
		sudo service docker restart
		refer: http://dockerone.com/question/21

[其他相关docker资料]

  • QQ群:321380754
  • 作者:罗明刚

Clone this wiki locally