Docker常见操作总结

Docker的三个名词

镜像:类似与虚拟机的镜像,用来创建相应容器。
仓库:存放各种镜像的地方。
容器:由镜像创建的,运行程序的环境。

镜像和容器的关系

Docker面向对象
容器对象
镜像

镜像的相关操作

(1)从网易镜像库中拉取docker镜像
    docker pull hub.c.163.com/library/nginx:latest
(2)查看本机镜像
    docker images
(3)运行镜像
    前台运行镜像:
        docker run 镜像名
    后台运行镜像并指定端口映射:
        docker run -d -p 8080:80 容器名
    -d为后台运行
    -p 8080:80   8080为主机端口    80为容器端口

需要注意
每次执行docker run命令,Docker都会新建一个新的容器。

容器的相关操作

(1)显示容器
    列出当前运行的所有容器    docker ps
    列出所有的容器           docker ps -a
(2)启动一个未运行的容器
    docker start 容器名/ID
(3)进入一个正在后台运行的容器(命令行)
    docker exec -it 容器名/ID bash|sh
    -i 交互式
    -t 临时终端
    万能退出命令    exit
(3)关闭一个运行的容器
    docker stop 容器名/ID

制作自己的镜像

(1)编写相关的Dockerfile文件
这里以一个网站项目的镜像为例(即将项目war包放在webapps下)

//依赖的tomcat镜像
from hub.c.163.com/library/tomcat

MAINTAINER 姓名 邮箱 

//将你的项目test.war放到webapps下
COPY test.war /usr/local/tomcat/webapps

(2)构建Dockerfile文件

//test   镜像名
//latest 标签名
// .     当前路径
docker build -t test:latest .

还有一些问题

(1)当发现3306端口占用时,一般是本地数据库占用了相关端口
    关闭mysql数据库       service mysql stop
(2)查看特定端口的状态(8080)
    netstat -na|grep 8080
(3)查看软件位置(mysql)
    which mysql
(4)Docker容器中安装vim等软件
    1>apt-get update         更新软件源
    2>apt-get install vim    下载vim
(5)删除Docker中的镜像
    首先需要删除该镜像创建的所有相关容器,然后才可以删除该镜像
    1>docker rm 容器名/ID      删除相关容器
    2>docker rmi 镜像名/ID     删除相关镜像
(6)查看某个命令的参数(docker run)
    docker run --help
### Docker Push 过程中的常见问题及解决方法 #### 1. **Docker Daemon 未运行** 当尝试执行 `docker push` 命令时,如果返回错误提示类似于 `Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?`[^3],这表明 Docker 守护进程可能尚未启动。 - 确保 Docker 服务已正常运行。可以通过命令 `sudo systemctl status docker` 检查其状态。 - 如果守护进程未运行,可使用 `sudo systemctl start docker` 启动它。 --- #### 2. **网络连接问题** 在网络环境中,可能会遇到诸如 `dial tcp getsockopt: connection refused` 的错误消息[^5]。这种情况下通常是因为目标注册表服务器不可达或本地网络配置存在问题。 - 验证主机与远程仓库之间的连通性,例如通过 `ping` 或者 `curl` 测试目标地址是否可达。 - 若使用代理环境,则需确认 `/etc/systemd/system/docker.service.d/http-proxy.conf` 文件中设置了正确的 HTTP/HTTPS 代理设置,并重新加载配置: ```bash sudo systemctl daemon-reload && sudo systemctl restart docker ``` --- #### 3. **权限不足** 某些场景下,即使 Docker 已经安装并运行成功,在执行涉及镜像操作(如 pull/push)的操作时仍会因权限受限而失败。 - 将当前用户加入到 `docker` 用户组来避免每次都需要输入管理员密码: ```bash sudo usermod -aG docker $USER ``` - 登录后退出再进入使更改生效;也可以直接重启机器完成切换。 --- #### 4. **认证失效** 在向私有存储库推送数据之前必须先登录对应的服务端口,默认为官方公共索引 (index.docker.io),否则会出现鉴权方面的障碍。 - 使用以下指令完成身份验证过程: ```bash docker login --username=your_username registry.example.com ``` - 输入关联账户的密码即可建立安全链接以便后续上传动作得以继续进行下去[^4]。 --- #### 5. **镜像标签不匹配** 确保所要提交的目标对象已经打上了合适的标记名次,因为只有带有所属命名空间前缀以及具体版本号的信息才能被正确识别定位至目的位置上。 - 对于自定义域名下的实例来说尤其重要,比如 `myrepo/myimage:v1.0` 而不是简单的 `myimage` 单独存在形式。 - 应用恰当的 tag 方法如下所示: ```bash docker tag source_image[:tag] target_registry/target_image[:tag] ``` --- #### 6. **磁盘空间不足** 有时由于宿主机剩余可用容量过少也会阻碍整个流程顺利完成,因此建议定期清理不再使用的资源文件释放更多空间出来供新任务消耗掉。 - 列举悬空镜像列表并通过管道传递给移除函数实现自动化处理机制: ```bash docker images -f dangling=true | awk '{print $3}'| xargs docker rmi ``` --- ### 总结 上述列举了几种典型的关于 `docker push` 执行期间可能出现的技术难题及其对应的修复策略。实际应用当中还需要根据具体情况灵活调整应对措施以达到最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值