安工-天池Docker训练营Docker安装及基本命令
本学习笔记为阿里云天池龙珠计划Docker训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/activity/promotion/aicampdocker
一、学习知识点摘要
- Linux 、Windows 10 和 MacOS 上的安装。
- docker 基础命令学习
二、学习内容
1 拉取镜像
docker pull [选项][docker镜像地址:标签]
2 运行镜像
$ docker run hello-world
Hello from Docker! This message shows that your installation appears
to be working correctly.To generate this message, Docker took the following steps:
- The Docker client contacted the Docker daemon.
- The Docker daemon pulled the “hello-world” image from the Docker Hub.
(amd64)- The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.- The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/For more examples and ideas, visit:
https://docs.docker.com/get-started/
3 运行镜像并进入容器
$ docker run -it --rm ubuntu:18.04 bash root@e7009c6ce357:/# uname -a
Linux bff9f261bab2 4.15.0-106-generic #107-Ubuntu SMP Thu Jun 4
11:27:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux root@e7009c6ce357:/#
exit
4查看本地镜像(list 镜像)
$ docker images REPOSITORY TAG IMAGE ID
CREATED SIZE redis latest
5f515359c7f8 5 days ago 183 MB nginx
latest 05a60462f8ba 5 days ago 181 MB
5 查看运行中的容器
$ docker ps CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES 9363b1b51118
testlog:1 “bash” 7 weeks ago Up 7 weeks vigilant_bhaskara
6 进入运行中/后台运行的容器
$ docker exec -it [CONTAINER ID] /bin/bash
7保存修改
docker commit [CONTAINER ID]registry.cn-shanghai.aliyuncs.com/test/pytorch:myversion
8 打TAG
有时需要对临时版本,或者节点版本做一个标记保留,打TAG标签非常好用,并不会额外占用空间
docker tag registry.cn-shanghai.aliyuncs.com/test/pytorch:myversion my_tmp_version:0.1
9推送镜像到仓库
docker push registry.cn-shanghai.aliyuncs.com/test/pytorch:myversion
10使用dockerfile构建镜像
Dockerfile示例(注意一般文件名命名为Dockerfile 无后缀名,如果命名为其他名字,构建时需要额外指定文件名)
Base Images
从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720)
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
##安装依赖包
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
##或者从requirements.txt安装
##RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
把当前文件夹里的文件构建到镜像的根目录下,并设置为默认工作目录
ADD . /
WORKDIR /
镜像启动后统一执行 sh run.sh
CMD [“sh”, “run.sh”]
11 构建镜像
docker build -t registry.cn-shanghai.aliyuncs.com/target:test .
12删除镜像/容器
- 删除镜像:
docker rmi registry.cn-shanghai.aliyuncs.com/target:test
- 删除容器:
docker rm [CONTAINER ID]
- 如果容器还在运行,则会删除失败,应先结束掉容器:
docker kill [CONTAINER ID]
- 查看运行中的容器:
docker ps
- 查看所有容器:
docker ps -a
三、学习问题与解答
无法附着到容器,即docker attach没反应
答:可以在容器已经运行的情况下,使用下面命令(注意一定时docker容器已经运行):
docker exec -it CONTAINER ID /bin/bash 或者 docker exec -it NAME /bin/bash
CONTAINER ID和NAME表示已运行的容器ID和容器名;但是这种方式,每执行一个命令,都要在docker容器内开启一个新的进程;
以这种方式切换到容器后,如果通过exit,ctrl+C,ctrl+D方式退出,容器并不会停止运行,所以这是一种比较保险的方式,防止误停止容器运行;
四、学习思考与总结
通过对Docker的初步了解,算是步入了基础的大门。为以后的学习使用提供了一个基础。