0、更换国内源
更改 /etc/docker/daemon.json 文件
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
然后重启docker
service docker restart
docker 安装,建议用清华大学镜像站的方式:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
1、查看docker镜像
docker images
-
REPOSITORY:表示镜像的仓库源
-
TAG:镜像的标签
-
IMAGE ID:镜像ID
-
CREATED:镜像创建时间
-
SIZE:镜像大小
2、运行image(以webapp为例)
docker run -it -d webapp:v2 /bin/bash
如果需要image后台运行要加上-d参数,否则退出image后,image即停止运行。
如果需要NVIDIA显卡加速,需要将docker命令改为nvidia-docker运行。
说明:此时已经进入镜像中,然后进行相应的操作,退出镜像后,镜像内容会恢复到上一次保存的状态
3、执行images(必须是已经在运行的image)
先用 docker ps 查看正在运行的images
执行image(id= 66af582e07be)
docker exec -it 66af582e07be /bin/bash
说明:只要次image没有停止,所做更改会一直保持,直到保存更改,或者停止image更改丢弃。
4、更新/保存images
docker commit -m="has update" -a="roy" ba0537634cac webapp:v2
-
-m:提交的描述信息
-
-a:指定镜像作者
-
ba0537634cac:容器ID
-
webapp:v2:指定要创建的目标镜像名
此时再执行 docker images 可以查看当前images
5、挂载物理机文件夹
docker run -it -v /home/roy/TF:/root/TF webapp:v2 /bin/bash
此时,在image(webapp:v2)中/root下有一个TF的目录,两个目录同步更新。image停止挂载即消失。
6、停止image运行状态
docker stop 66af582e07be
7、端口映射
docker run -it -p 8068:3000 -p 8069:3306 -v /home/huangsongqiang/tf/:/home/tf -d nodeexp-1.1:latest /bin/bash
将主机的8068,8069端口分别映射到image的3000,3306端口 -p 8068:3000 -p 8069:3306
8、从本地仓库操作images
现在配置文件添加本地仓库(请在Linux的docker中修改Registry server上的Docker daemon的配置,为/etc/docker/daemon.json增加)
insecure-registry:
{
"registry-mirrors": [
"https://cjn5aol2.mirror.aliyuncs.com"
],
"insecure-registries": [
"172.22.84.163:5000"
]
}
配置完记得重启docker
docker tag 镜像名称 172.22.84.163:5000/标签名 更改表情
docker push 172.22.84.163:5000/标签名 上传
docker pull 172.22.84.163:5000/busybox 下载
9、image导出与导入
# 导出到文件夹
docker save -o /home/huangsongqiang/images/keras.tar cuda9.0/cudnn7.0:tf-gpu-1.7-6
# linux scp传到服务器文件夹里
scp -r -P 6970 keras.tar roy@172.30.2.27:/home/huangsongqiang/
# 导入image文件
docker load --input keras.tar
10、删除image
docker images # 查看所有容器
docker rmi 2f6175921200 # 删除IMAGE ID为2f6175921200的image
有时候无法删除image,可以使用强制删除()
docker rmi -f 2f6175921200 # 强制删除IMAGE ID为2f6175921200的image
11、获取image
1、查找镜像
1)https://hub.docker.com/ 网站进行搜索
2)docker search [options] <image_name>[:tag] # 查找镜像
※ -s num :可以查找多少星以上的镜像
※ --automated:默认false,显示automated build 镜像
※ --no-trunk :默认false ,不以截断方式查找镜像
2、下载
docker pull [options] <镜像名称>[:tags] # 获取image
※ -a :下载所有该tags的镜像
※ 忽略tags下载最新版本的镜像
注:使用docker pull一个镜像时,出现Error response from daemon:...latest not found解决办法
roy@devgpu117:/$ docker pull neptuneml/tensorflow-1.12-gpu-py3
Using default tag: latest
Error response from daemon: manifest for neptuneml/tensorflow-1.12-gpu-py3:latest not found
问题分析:
这个问题根据提示是因为找不到最新的image,docker默认下载lastest。所以我们要指定具体的版本,我当时想pull的就是最新的所以,指定最新的版本,具体的操作方法如下。
-
前往Docker Hub
https://hub.docker.com/ -
搜索你想pull的image,可以模糊搜索,然后在里面找到你想要的,进入相应的image介绍,查看tag,然后在pull的image后面加上tag即可。 eg:docker pull neptuneml/tensorflow-1.12-gpu-py3:2.8.22-3
相应链接:https://blog.youkuaiyun.com/jianchi1117/article/details/86678486
3、查看已经下载镜像
docker images
4、如何将镜像推送到docker hub网站
docker push <image_name>:tags
12、查看container内的进程与宿主机对应的进程
docker ps # 查看正在运行container对应的id
docker top <运行container对应的id>
就会的到以下的信息,其中PID是容器内进程在宿主机上的PID
UID PID PPID C STIME TTY TIME CMD
root 33998 33967 0 13:57 pts/0 00:00:00 /bin/bash /entrypoint.sh /bin/bash
root 34110 33998 0 13:57 pts/0 00:00:00 /bin/bash
13、将用户添加到docker组实现对docker的操作
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
错误整理
1、Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
错误截图:
发现是/etc/docker/daemon.json文件内容格式错误,检查格式修改即可启动。
2、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.35/images/json: dial unix /var/run/docker.sock: connect: permission denied
说明:未将当前用户添加到docker组中,只有将当前用户添加到docker组中才能实现对docker的操作
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组