Docker环境搭建及学习

一、Docker开发环境搭建

  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
  • 简而言之,就是弄好docker镜像,大家可以共享使用。

1、安装 docker

sudo apt-get install docker.io
# 查询版本
docker version
Client:
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.8
 Git commit:        20.10.7-0ubuntu1~18.04.1
 Built:             Wed Aug  4 22:43:25 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version: dial unix /var/run/docker.sock: connect: permission denied

2、加入权限

默认情况下会报后面的错误,如果使用sudo就不会报错。不想每次都sudo的话,可以把用户加入到docker组。

# 如果还没有 docker group 就添加一个(默认安装后已经有了)
# sudo groupadd docker

# 将用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${your_user_name} docker

# 重启 docker 服务
sudo service docker restart

# 更新用户组(切换当前会话到新 group), 或者关掉终端重新连接也会生效
newgrp - docker

3、常用命令

Docker命令_各种参数简介(run、v、rm、-w、-u、-e)

镜像使用:

# 拉取镜像
docker pull <镜像名称>

# 使用镜像
docker run <镜像名称>:<TAG>
# 使用镜像容器,并为以命令行模式进入该容器
docker run -it <镜像名称>:<TAG> /bin/bash

# 删除镜像
docker rmi <镜像名称>:<TAG>

# 查看镜像
docker images

容器使用:

# 查看所有的容器
docker ps -a

# 启动容器
docker start <CONTAINER ID>

# 停止容器
docker stop <CONTAINER ID>

# 重启容器
docker restart <CONTAINER ID>

# 删除容器
docker rm -f <CONTAINER ID>

# 进入已启动的容器(exit 退出后容器会停止)
docker attach <CONTAINER ID>

# 进入已启动的容器(exit 退出后容器不会停止)
docker exec -it <CONTAINER ID> /bin/bash

# 退出容器(在进入容器后)
exit

其他:

# 从容器中拷贝文件到宿主机(本地)
docker ps -a	# 查看容器
docker cp <CONTAINER ID>:<path/file> .	# 复制文件到本地当前路径(不需要开启容器)

# 从宿主机(本地)拷贝文件到容器
docker cp <path/file> <CONTAINER ID>:<path/file>
用法:docker [OPTIONS]命令

选项:
# ——config string客户端配置文件的位置
# -c,——context string要连接到的上下文的名称daemon(覆盖DOCKER_HOST环境变量和默认上下文设置为"docker context use")
# -D,——debug打开调试模式
# -H,——host list要连接的守护进程套接字
# -l,——log-level string 设置日志级别(“调试”|“信息”|“警告”|“错误”|“致命”)(默认“信息”)
# 	——tls使用tls;由——tlsverify暗示
# 	——tlscacert string仅由该CA签署的信任证书
# 	——tlscert string TLS证书文件路径
# 	——tlskey string TLS密钥文件路径
# 	——tlsverify使用TLS,验证远程
# -v,——version打印版本信息并退出

管理命令:
管理构建
config管理Docker配置
管理容器
管理上下文
image管理镜像
manifest管理Docker镜像清单和清单列表
网络管理网络
管理集群节点
管理插件
secret管理Docker的秘密
服务管理服务
stack管理Docker堆栈
swarm管理swarm
系统管理Docker
trust管理Docker镜像的信任
volume管理卷

二、问题记录

【问题解决】docker警告:open /home/xxx/.docker/config.json: permission denied
【问题解决】docker.io : 依赖: containerd (>= 1.2.6-0ubuntu1~)
【问题解决】Error response from daemon: Head https://registry-1.docker.io/v2/
【问题解决】Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon runni


问题: docker TAGnone ,镜像无法删除
解决:

# 查看镜像,找到对应的 IMAGE ID
docker images
# 给该镜像打上标签(REPOSITORY 为仓库名,TAG 随意定一个标签名)
docker tag <IMAGE ID> <REPOSITORY>:<TAG>
# 删除镜像
docker rmi <镜像名称>:<TAG>

问题: 删除镜像失败,有已经打开的容器
Error response from daemon: conflict: unable to remove repository reference " ... " (must force) - container cb5a1151aedf is using its referenced image 5dbd183094c0
解决:

# 列出所有容器
docker  ps  -a
# 删除所有使用了该镜像的容器
docker rm -f <CONTAINER ID>
# 删除镜像
docker rmi <镜像名称>:<TAG>

问题: 执行 docker run --rm -v $PWD:/project 报错:
docker: Error response from daemon: create $PWD: "$PWD" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path. See 'docker run --help'.
解决:
docker run --rm -v /$PWD:/project


参考

docker中文社区
Docker入门教程
Docker 教程(菜鸟教程)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值