1.docker运行示例:
docker run -dit --name=mingzi -p 8080:8080 -p 8443:8443 -p 21:21 -p 2204:22 -p 9005:9005 -p 8005:8005 -p 8009:8009 -p 10909:10909 -p 10911:10911 -p 10912:10912 -p 3306:3306 -p 514:514/udp -p 515:515/udp -p 69:69/udp -p -v /etc/localtime:/etc/localtime:ro --privileged --restart=always [image-id] /bin/bash
参数解释:
-v:将宿主机的时间挂载到docker中(挂载localtime文件到容器内),保证两者所用的时区是一致的。注意:如果挂载时间时出现:WARNING:IPv4 forwarding is disabled.Networking will not work.则编辑/usr/lib/sysctl.d/00-system.conf文件,后面追加:net.ipv4.ip_forward=1即可。
-i:让容器的标准输入保持打开
-t:分配一个伪终端绑定在标准输入上
-d:以守护态的形式运行容器
--name:给容器命名一个名字
-p:后面接宿主机端口号:docker端口号
--privileged:启动的容器,可以看到很多host上的设备,并且可以执行mount
--restart=always:当docker重启时,容器会自动重启。
2.防火墙设置(设置Centos7防火墙放行端口)
打开防火墙:systemctl start firewall.service
放行需要开放的端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
重新加载防火墙:firewall-cmd --reload 或者
systemctl restart firewalld.service
查看防火墙端口开放情况:firewall-cmd --zone=public --list-all
3.运行容器后的操作
docker ps:查看容器信息
进入容器:docker exec -it [container id] /bin/bash:
退出容器:exit
停止运行容器:docker stop [container id]
删除容器:docker rm [container id]
删除镜像:docker rmi [image id]
4.docker常见问题
(1)启动docker失败:
使用命令systemctl start docker 报如下错:
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
解决:升级内核或者禁用/etc/sysconfig/docker文件中的selinux=disable。
(2)初次docker run ……失败(失败后存在一个僵尸进程)
报错:/usr/bin/docker-current:Error response from daemon: oci runtime eror:container_linux.go:235:strting container process caused :proes_linux.go:258:applying cgroup configuration for proces caused "Cannot set property TaksAccounting,or unknown property""
解决:一般由docker版本和linux内核版本不兼容导致,解决办法:
利用yum update 命令升级所有的rpm包,也升级软件和系统内核
(3)docker load -i …….tar时,异常退出,退出状态为1.
解决:tar包可能有问题,重新解压zip包
(4)docker端口映射或启动容器时报错
报错:Error response from daemon:driver failed programming external connectivity on endpoint [container name]
解决:docker 服务启动时定义的自定义链DOKER由于某种原因被清掉(例,对于已经删除的容器再次docker run时更改了映射端口),重启docker服务即可重新生成自定义链DOCKER.
systemctl daemon-reload
systemctl restart docker