首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker的使用二

docker的使用二

作者头像
GH
发布2020-04-02 18:12:45
9260
发布2020-04-02 18:12:45
举报

一、容器操作补充

创建一个容器执行的第一条命令是/bin/bash,如:

docker create -it --name=mycentos1 centos:7 /bin/bash
#容器在创建后,当运行时执行的第一行命令/bin/bash命令,bash可以让Linux系统夯在那里,所以我们执行docker start 容器id/容器名字 后容器便一直在后台运行,如果我们把这个命令改成别的则容器启动后执行完后面的命令就自动停止了
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建后就登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。


-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

容器运行

docker start 容器id/容器名字

创建并运行

docker run -di --name=容器名字  镜像:版本号 #后台运行
docker run -di --name=mypython  python:3.6
docker run -idt --name=容器名字  镜像:版本号
docker run -idt --name=mypython  python:3.6 #前台运行
python的-t命令可以进入python相当于:/bin/bash

进入容器

docker exec -it 容器id 容器内命令
docker exec 85768eb78045 ps -a #在容器上执行ps -a,执行完就退回到宿主机
# 方式一
docker exec -it 容器id /bin/bash #当进入到容器后执行/bin/bash就会夯住容器内的Linux系统,也就进入了容器

# 进入Python容器
docker exec -it 容器ID python
#当然如果进入python mysql等容器也可以先执行docker exec -it 容器id /bin/bash,然后再执行python、mysql等

#方式二
#attach:进入容器,连到第一个进程上
docker attach 容器ID

#方式三
# ssh连接,需要在容器上安装ssh服务

删除容器

docker rm 容器ID/容器名字

总结

docker run:创建并运行         
docker exec:容器执行命令(通常用来:进入容器) docker exec -it 容器id/容器名字 /bin/bash

文件拷贝

# 从宿主机copy文件到容器
docker cp 1.txt centos7:/home  # 把当前路径下的1.txt拷贝到容器的/home

# 从容器copy文件到宿主机
docker cp centos7:/home/1.txt 1.txt  # 把容器home路径下的1.txt拷贝到当前路径下

二、网络和数据卷

将宿主机目录映射到容器

docker run -di --name=mycentos -v /root/test:/home centos:7#宿主机test文件夹映射到容器内部(可以映射多个)

端口映射

docker run -di --name=myredis -p 6378:6379 redis#将宿主机的6378映射到容器的6379端口(可以映射多个)

查看容器信息

docker inspect 容器名称(容器ID) #docker inspect 容器名称查看容器的详细信息
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql#查看容器mysql的ID

三、备份迁移

将容器保存为镜像

#docker commit 容器名字 镜像名字
docker commit centos7 my_image_centos7

将镜像打包为压缩文件

#把my_image_centos7镜像压缩到centos_my.tar中
docker  save -o centos_my.tar my_image_centos7

将压缩文件恢复成镜像

docker load -i centos_my.tar

四、dockerfile

Dockerfile是由一系列命令和参数构成的脚本,这些命令基于基础镜像并最终创建一个新的镜像。dockerfile类似于项目中的requirements里面是我们构建的镜像所需要的依赖的安装命令等内容,当我们构建完成dockerfile文件后只需将该文件移植到另一台docker上运行就可以生成一个我们需要的镜像。

# 我们需要创建一个文件名为Dockerfile的文件
# 文件文件名必须叫 Dockerfile

FROM python:3.6     #基于python:3.6这个镜像进行构建
MAINTAINER abc      #在新的镜像里创建一个名字为abc的文件夹
RUN pip install django==1.11.9  -i https://pypi.doubanio.com/simple#将源换成豆瓣源然后安装Django
RUN mkdir /home/abc #在abc这个文件夹下运行

WORKDIR /home      #将工作文件夹设置为/home

执行下面的命令开始构建镜像

docker build -t='django_img' .   # 构建出django_img 镜像

五、创建私有仓库

我们可以创建一个私有的仓库用于存放我们的私有镜像,私有仓库本质就是一个web项目linux+registry(用其他语言写的一个web服务),具体创建步骤如下:

# 1 docker pull registry   拉取registry镜像
# 2 docker run -di --name=registry -p 5000:5000 registry  运行容器
# 3 浏览器访问:http://175.24.103.108:5000/v2/_catalog  返回空
#修改daemon.json

vi /etc/docker/daemon.json

"insecure-registries":["175.24.103.108:5000"]
  
# 4 重启docker 服务(所有容器都是停止状态)
systemctl restart docker

# 5 启动registry容器
docker start registry

# 6 标记镜像
docker tag django_img 175.24.103.108:5000/django_img

# 7 上传镜像(私有仓库)
docker push 175.24.103.108:5000/django_img
  
#8  再从浏览器访问http://175.24.103.108:5000/v2/_catalog
能看到刚刚上传的镜像

# 以后只要同时配置了daemon.json,再拉取镜像,优先从私有仓库拉,没有在去国外
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、容器操作补充
    • 容器运行
      • 创建并运行
        • 进入容器
          • 删除容器
            • 总结
              • 文件拷贝
              • 二、网络和数据卷
                • 将宿主机目录映射到容器
                  • 端口映射
                    • 查看容器信息
                    • 三、备份迁移
                      • 将容器保存为镜像
                        • 将镜像打包为压缩文件
                          • 将压缩文件恢复成镜像
                          • 四、dockerfile
                          • 五、创建私有仓库
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档