docker 入门随笔

virtual machine VS  docker

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的就是最新的所以,指定最新的版本,具体的操作方法如下。

  1. 前往Docker Hub
    https://hub.docker.com/

  2. 搜索你想pull的image,可以模糊搜索,然后在里面找到你想要的,进入相应的image介绍,查看tag,然后在pull的image后面加上tag即可。 eg:docker pull neptuneml/tensorflow-1.12-gpu-py3:2.8.22-3

相应链接:https://blog.csdn.net/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     #更新用户组

3、进入容器后字体颜色太深,开不清楚

解决办法:https://www.cnblogs.com/Genesisx/p/6133147.html 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值