Docker常用命令总结

查看docker服务端和客户端版本
# docker version

查看docker容器信息,显示 Docker 系统信息,包括镜像和容器数。
# docker info

帮助命令
# docker –help

查看docker进程
docker ps
[参数列表]
-l 返回最后的容器的状态
-a 看所有容器包括已经停止的容器

从服务器拉取镜像
# docker pull  

列出本地所有镜像
# docker images
# docker image prune // 删除所有悬虚镜像

存储镜像
# docker save 

载入镜像
# docker load 

删除容器
# docker rmi 

将已终止容器启动
# docker start 

停止正在运行的容器
# docker stop

命令来停止容器或然后再启动容器。
# docker restart

提交本地修改容器
# docker commit 

查看docker容器信息
# docker inspect <容器名>

查看容器
# docker container ls  //查看所有运行的容器
# docker container prune  //删除所有的停止的运行的容器

查看数据卷
# docker volume
# docker volume prune //删除所有停止使用的数据卷

查看docker的宿主机端口映射容器端口
# docker port <容器名>

查看docker 系统镜像、容器、数据卷使用情况
# docker sytem df  

从宿主机进入docker容器
docker exec -it <容器id> bash
docker exec -it <容器id> sh
docker exec -it <容器id> bash
docker exec -it <容器id> sh

物理机和容器之间复制命令如下:
容器复制文件到物理机:docker cp <容器名称>:<容器目录> <物理机目录>
物理机复制文件到容器:docker cp <物理机目录> <容器名称>:<容器目录>
eg:docker cp channelWeb:/opt/tomcat/apache-tomcat-7.0.75/webapps/channel-web.war /home/app/

查看docke容器内日志
# docker logs -f –tail=100  <容器名>

查看docker各容器CPU占用情况
# ctop

运行docker虚拟机
# docker run –name <虚拟机别名> –rm -p <宿主机端口:虚拟机端口>  –network  <自定义网络>  <镜像名称>
[参考资料]
[参数列表]
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,
-i 则让容器的标准输入保持打开。
-d 让 Docker 容器在后台以守护态(Daemonized)形式运行
-v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷。用户也可以通过 :ro 指定为只读。
-p 标示来指定端口。

进入容器 
# docker exec -it <容器名称> bash

导出容器快照
# docker export 

导入容器快照
# docker import 

Docker 实践问题汇总

【问题1】 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

—————————————

【解决】 没有启动 docker 服务,执行启动docker服务 


【问题2】 Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details

—————————————

【解决】 Docker启动异常的可能原因:

  • 1、内存不够:Docker 启动至少需要2G内存,首先执行free -mh命令查看剩余内存是否足够
  • 2、端口冲突:该docker监听端口已经被其他进程占用,一般此种问题容易出现在新部署的服务,或在原有机器上部署新的后台服务,所以在部署之前应该执行命令检查端口是否已经被占用,如果上线后发现占有则应改为可用端口再重启之。

【问题3】 默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息: WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled

—————————————

【解决】 请添加内核配置参数以启用这些功能。

然后重新加载 sysctl.conf 即可 $ sudo sysctl -p

【问题4】docker容器中没有vim工具

—————————————

【解决】
首先检查这个镜像是基于什么系统


现在docker-hup上大部分都是基于Debian linux构建的,主要是因为这个Debian系统内核比较小。可以通过执行如下命令完成vim安装。

【docker 使用注意事项】

1、制作镜像尽量避免使用docker commit命令,原因这样制作的镜像像一个黑盒操作,开发人员不知道里面具体改动了那些内容。 docker commit 可以用于被攻击后记录轨迹
2、docker run 宿主机端口:docker虚拟机端口 注意:在冒号前面的端口为宿主机的端口,后面的为虚拟机端口
3、强烈建议将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 –link 参数。
4、使用docker image prune 可以清除无用的虚悬镜像
5、docker run –name 最好使用name参数配置,给启动的docker镜像起一个名字,否则docker每次回自动给其命名,且每次的名字不 一样。


【dockerfile 编写注意事项】

1、使用dockerfile制作docker镜像时,同类命令尽量使用&&拼接,减少创建的镜像层数,提高镜像创建速度 注意:docker最大镜像层数127
2、dockerfile中记录使用的cmd命令,会被docker run 后面的执行的命令覆盖
3、dockerfile中ADD命令可以实现自动解压的效果。注意,虽然ADD和COPY都可以复制文件,但建议只有在需要对复制文件进行自动解压时使用add。

Docker使用国内镜像加速器

使用daocloud 中的国内加速器

在docker上执行上命令,当执行成功后,会自动在/etc/docker/目录下添加daemon.json和key.json

如果生效的话,需要重启docker服务

systemctl restart docker

【参考资料】
https://www.daocloud.io/mirror#accelerator-doc