1.查看
docker images
2.进入ubuntu容器交互系统:
docker run -i -t ubuntu /bin/bash
# Ubuntu 是镜像名
3.安装Python环境
apt-get update
apt-get install python3.6
4.查看安装后的python
python3.6
退出python3.6,需要使用: exit();
5.退出容器
exit (直接退出并关闭容器)
Ctrl+Q+P (退出容器,但不关闭容器)
6.查看容器的信息
docker ps -n 5
7.进入容器
docker start CONTAINER_ID #进入前需要先启动
docker attach CONTAINER_ID
8、终止容器
docker stop CONTAINER_ID #用来终止一个运行中的容器。
docker stop $(docker ps -a -q) #停止所有容器
9、启动容器
docker start CONTAINER_ID #启动ID 为CONTAINER_ID的容器
10、删除容器
docker rm CONTAINER_ID
对比,删除镜像:
docker rmi IMAGE_ID
docker rmi $(docker images | grep "none" | awk '{print $3}') #批量删除 none镜像
11、打包容器成新的镜像(pyinstaller打包涉及中文编码问题,此方式作废)
docker commit CONTAINER_ID New_Image_Name
#linux系统打包python可执行文件,默认保存到/PycharmProjects/Weather /dist
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$
pyinstaller -F zhejiang_history_sq.py
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather/dist$
sudo docker build --tag=zhejiang_history_sq . #注意最后这个点不要落下
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$ sudo docker run zhejiang_history_sq
12.制作python环境基础镜像
# 目录下包含 Dockerfile + reqirements 两个文件即可
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather/base_image$
sudo docker build --tag=base_image_python . #注意最后这个点不要落下
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather/base_image$
sudo docker run base_image_python . #注意最后这个点不要落下
13.制作/运行 爬取历史数据 镜像
# 目录下包含 Dockerfile + zhejiang_history_sq.py 两个文件即可
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$
sudo docker build --tag=zhejiang_history_sq
kinvy@kinvy-virtual-machine:~/PycharmProjects/Weather$ sudo docker run zhejiang_history_sq
14.制作/运行 爬取实时数据 镜像
14.1 制作Dockerfile------------------------------------
# Use an official Python runtime as a parent image
#最近一层基础镜像
FROM crawlbasic:v1
#容器中的工作目录
WORKDIR /zhejiang_realtime_yq
#在Pycharmproject目录下执行命令时,将./images/zhejiang_realtime_yq目录下的所有文件,拷贝到容器/zhejiang_realtime_yq目录下
COPY ./images/zhejiang_realtime_yq /zhejiang_realtime_yq
#在Pycharmproject目录下执行命令时,将./Weather目录下的所有文件,拷贝到容器/zhejiang_realtime_yq目录下
COPY ./Weather /zhejiang_realtime_yq
RUN crontab /zhejiang_realtime_yq/crontabfile \ #执行定时文件
&& cp /zhejiang_realtime_yq/crontabfile /etc/cron.d/ \
&& chmod u+x /etc/cron.d/ \
&& touch /var/log/zhejiang_realtime_yq.log #建立日志文件
CMD cron && tail -f /var/log/zhejiang_realtime_yq.log
#执行定时任务,显示日志
---------------------------------------------------------------------
14.2 制作crontabfile
# 每小时执行一次
* */1 * * * python /zhejiang_realtime_yq/zhejiang_realtime_yq.py >> /var/log/cron.log
14.3 制作镜像
kinvy@kinvy-virtual-machine:~/PycharmProjects$
sudo docker build –f ./images/zhejiang_realtime_yq/Dockerfile --tag=zhejiang_realtime_yq:v1 . #最后的点不能忘记
14.3 运行容器/挂载容器到本地
kinvy@kinvy-virtual-machine:~/PycharmProjects$
sudo docker run -it -v /mnt/sda/download:/zhejiang_realtime_yq/download zhejiang_realtime_yq:v1
#本地文件目录 #容器文件目录 #需要使用的镜像名
对比软链接:
kinvy@kinvy-virtual-machine:~$ ln -s /mnt/sdb/Downloads /home/kinvy/Downloads
/home/kinvy/下的Downloads目录被剪切到/mnt/sdb/下之后,就可以使用软链接,不会占用系统磁盘(占用挂载磁盘)。
15.镜像上传dockerhub
kinvy@kinvy-virtual-machine:~$ service docker restart
kinvy@kinvy-virtual-machine:~$ service docker status
#登录docker
kinvy@kinvy-virtual-machine:~$ docker login 10.10.50.192:443
Username: ------
Password: -----
Login Succeeded
#拉取镜像
kinvy@kinvy-virtual-machine:~$ docker pull 10.10.50.192:443/base/ubuntu18.04:1.0
16. docker push 出现问题及解决方式
#需要把私有库地址10.10.50.192:443也加上
root@kinvy-virtual-machine:/home/kinvy/PycharmProjects#
docker tag df71fe36e356 10.10.50.192:443/jiangshui/crawlbasic:1.0
#上传镜像出现问题
root@kinvy-virtual-machine:/home/kinvy/PycharmProjects# docker push 10.10.50.192:443/jiangshui/crawlbasic:1.0
The push refers to repository [10.10.50.192:443/jiangshui/crawlbasic]
1dc0b4d7023b: Preparing
fd9564a639f2: Preparing
3ee7583fbb19: Preparing
5f2e74dabf22: Preparing
b9b7103af585: Preparing
ca2991e4676c: Waiting
a768c3f3878e: Waiting
bc7f4b25d0ae: Waiting
denied: requested access to the resource is denied
#需要重新登录
root@kinvy-virtual-machine:/home/kinvy/PycharmProjects# docker login 10.10.50.192:443
Username: ----
Password:----
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
#上传镜像
root@kinvy-virtual-machine:/home/kinvy/PycharmProjects# docker push 10.10.50.192:443/jiangshui/crawlbasic:1.0
17.拷贝本地文件到docker容器,以及容器导出新镜像,亲身实测!
步骤一:启动、进入容器
docker run -i -t python_requirements:201 /bin/bash
#容器内Python包的位置,查看Python包
ls /usr/local/lib/python3.6/dist-packages/
步骤二:查询容器ID
docker ps -a
docker inspect -f '{
{.ID}}' [容器NAMES]
得到一串编码---容器长ID
步骤三:本地文件拷贝
docker cp 本地路径 容器长ID:容器路径
sudo docker cp /home/kinvy/Documents/site_packages/keras 4b5f6c27ff93c17c18859fefaaebc476f6c789bceef01f1bf7cc3ccc19a5c0ae:/usr/local/lib/python3.6/dist-packages/
sudo docker cp /home/kinvy/Documents/site_packages/tensorflow 4b5f6c27ff93c17c18859fefaaebc476f6c789bceef01f1bf7cc3ccc19a5c0ae:/usr/local/lib/python3.6/dist-packages/
#拷贝本地目录下的所有文件到容器内的whole_control/目录下:
docker cp /root/Documents/flask_web-master20200522/. 494a4439ea9a5ca6f9aca3adadc8422327cfc5c1f721d0da6d3a23c9c70bfd7f:/whole_control/
步骤四:容器生成新的镜像
docker commit [容器NAMES] [新的镜像名称]
例如:
sudo docker commit priceless_lehmann python_requirements:latest
步骤五:补充拷贝本地文件到docker容器:
1.以交互式的方式再次进入容器:
docker attach [容器ID]
样例:
docker attach b615301cf358
( 或者 docker exec -it 容器ID bin/bash docker exec -it b615301cf358 bin/bash )
以上两个语句的区别就是:attach 直接进入容器启动命令的终端,不会启动新的进程,exec 是在容器中打开新的终端,并且可以启动新的进程
步骤六:安全退出交互式界面:
Ctrl+P+Q
其他操作:
sudo docker build -f ./dockerfile_images/301-whole_control/Dockerfile --tag=whole_control:latest . #打镜像
sudo docker run -i -t -p 29000:29000 whole_control:latest /bin/bash #端口映射
参考文章:
https://www.cnblogs.com/dazhan/p/9371818.html
https://jingyan.baidu.com/article/09ea3ede52323fc0afde3956.html