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 rm [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
来源: http://www.bubuko.com/infodetail-3095864.html