docker&dockerfile&容器实用操作,帮你填坑

6 篇文章 0 订阅
4 篇文章 0 订阅

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值