一.远程仓库
1.login/logout
登录/退出
$ docker login daoclound.io
$ cat ~/.docker/config.json
$ docker logout
2.search
搜索镜像库
$ docker serach apline
# alpine latest caf27325b298 5 months ago 5.529 MB
3.pull
下载镜像
$ docker pull apline #若不指定标签,则拉取latest版本
4.push
推送镜像
$ docker push sybs/alpine:v1.0
二.本地镜像
- 任务对镜像或容器的操作,都可以使用镜像/容器的
ID或名称
1.images
查看本地镜像
$ docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# alpine latest caf27325b298 5 months ago 5.529 MB
2.build
构建本地镜像
$ docker build -f ./Dockerfile -t sybs/alpine:v1.0 . #Dockerfile示例如下
#<<<<<<<<<<修改配置<<<<<<<<<<<
FROM alpine
WORKDIR /app
CMD /bin/sh
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3.history
查看镜像构建历史
$ docker history sybs/alpine:v1.0
4.rmi
删除本地镜像
$ docker rmi -f caf273 #根据ID删除
$ docker rmi -f alpine:latest #根据镜像名删除
三.容器管理
1.ps
查看容器
$ docker ps #查看活动的容器进
$ docker ps -qa #查看所有容器(包括已停止的)
2.run
从镜像拉起一个容器
- 参数:
-t:伪终端
;-i:标准输入(交互模式)
;-d:守护进程
$ docker run -ti --name myalpine alpine:latest #交互模式
$ docker run -tid --name myalpine alpine:latest #守护进程模式
$ docker run alpine /bin/sh -c "while true;do echo hello;sleep 1;done" #外部执行命令
八小时差问题: 容器使用UTC时间(Coordinated Universal Time,标准时间),与CST时间(China Shanghai Time,东八区) 有八小时时差
# 挂载宿主机时间
$ docker run --rm alpine date
$ docker run -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --rm alpine date
3.start/stop/restart
启动/停止/重启
$ docker start myalpine
$ docker stop myalpine
$ docker restart myalpine
4.attach
连接容器
$ docker attach myapline
#连续输入Ctl+P,Ctl+Q退出
5.exec
从外部运行容器命令
$ docker exec myalpine echo "hello world" #容器必须是已运行状态
$ docker exec -ti myalpine /bin/sh #外部终端交互,exit退出交互模式
6.rm
删除容器
$ docker rm -f myalpine
$ docker rm -f `docker ps -qa` #删除所有容器
$ docker rm -f $(docker ps -qa) #同上
7.top
查看进程信息
$ docker top myalpine
8.kill
杀死容器进程
$ docker kill myalpine
9.commit
从容器提交(备份)一个新镜像
$ docker commit -a "author" -m "message" myalpine myalpine-bak:v1.0
四.辅助命令
1.logs
查看容器日志
$ docker logs myalpine
2.inspect
检查(镜像、容器等配置信息)
$ docker inspect apline #镜像ID、镜像名、容器名、容器ID
$ docker inspect --format="{{.NetworkSettings.IPAddress}}" myalpine #查看容器IP
3.port
查看端口映射
$ docker port myalpine
4.iptables
端口映射
- 方式一:nat转发
# 将宿主机对8443端口映射为容器的443端口
$ host_port=8443 && dk_ip=172.17.0.1 && dk_port=443 #定义变量
$ iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $dk_ip:$dk_port
$ iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source $dk_ip --destination $dk_ip --dport $dk_port
$ iptables -A DOCKER -j ACCEPT -p tcp --destination $dk_ip --dport $dk_port
# 删除端口映射,只需把-A换成-D
- 方式二:修改配置,https://www.213.name/archives/1329
$ docker stop xxx
$ vim /var/lib/docker/containers/{container_id}/hostconfig.json
#<<<<<<<<<<<<<<<<<<修改配置<<<<<<<<<<<<<<<<<<<
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "8443"//宿主机port
}
]
},
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$ service docker restart
$ docker start xxx
5.cp
文件拷贝
$ docker cp ~/a.txt myalpine:/opt #从宿主机到容器
$ docker cp myalpine:/opt/a.txt ~/ #从容器到宿主机
6.save/load
镜像备份/还原(包含镜像和容器历史记录、元数据信息)
$ docker save [image] -o file.tar
$ docker load -i file.tar
7.export/inport
容器导出/导入快照
$ docker export -o ~/myalpine.snapshot myalpine
$ docker import ~/myalpine.snapshot sybs/alpine:v1.1
save和export的区别:
docker save保存的是镜像(image),docker export保存的是容器(container);
docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
8.volume
挂载数据卷
$ docker volume -h
# 1.指定具体目录(对应到容器的/opt目录)
$ docker run -tid --name myalpine -v /Users/sybs/opt:/opt alpine:latest
# 2.手动创建valume
$ docker volume create my-volume
$ docker run -ti -v my-volume:/opt alpine sh
# 3.自动创建valume(找不到时自动创建)
$ docker run -tid --name myalpine -v my-volume:/opt alpine:latest
$ docker volume inspect my-volume #查看自动创建的valume位置
五.系统命令
1.info
系统信息
$ docker info
2.network
查看网络信息
$ docker network ls
3.help
帮助
$ docker -h
$ docker network -h
4.version
版本信息
$ docker version
5.Docker配置文件
$ cat /etc/sysconfig/docker
$ cat /var/log/messages