前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker入门笔记

docker入门笔记

作者头像
范一刀
发布2021-08-10 11:38:00
3400
发布2021-08-10 11:38:00
举报
文章被收录于专栏:CSDN技术博客CSDN技术博客

1 docker安装

docker 加速器 安装(ubuntu)

step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
#自建加速文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://j6o4qczl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker 加速器 安装(Centos7)

安装加速器方法:

step 1: 安装必要的一些系统工具
 yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装 Docker-CE
yum makecache fast
yum -y install docker-ce
Step 4: 开启Docker服务
systemctl restart docker
systemctl enable docker

#自建加速文件

yum install -y yum-utils device-mapper-persistent-data lvm2 && yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum makecache fast && yum -y install docker-ce 
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://j6o4qczl.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

2 docker 基本命令

2.1 #下载一个centos 镜像
docker pull  centos  
2.2 #删除一个centos 镜像
docker rmi  centos  
2.3 #删除一个正在运行的容器
docker rm -f 容器id 
2.4 #查看本地docker镜像列表
docker images 
2.5 #保存网上镜像
docker save centos  > /iso/xxx.tar.gz  
docker save -o centos.tar centos/centsos
2.6 #使用本地保存镜像
docker load  < /iso/xxx.tar.gz  
2.7 启动容器 并执行命令(命令执行成功后背退出)
docker run centos /bin/echo "hehe" 
2.8 查看docker 容器进程

(可查看 状态,退出或者正在运行的进程,不加-a 只显示正在运行的容器)

docker ps -a  
docker run  -t 打开终端 -i 保持终端打开状态 centos 镜像  -name 名字 /bin/bash 执行命令

使用 CTRL+P+Q 退出当前容器内部回话,就会后台运行了。

(启动容器) docker start 容器id

2.9 进入容器 多终端 操作同步
docker attach 容器id  

容器理念是单进程, 如 执行一个/bin/bash 当退出/bin/bash之后 相当于退出 bash环境 自然就结束掉了。

2.10 可以访问另一个进程的 名称空间 namespace
nsenter   (安装包util-linux) 


docker inspect --format "{{.State.Pid}}" 容器id  # 获取容器pid
nsenter -t 19233 -u -i -p -n  #  同构nsenter --help  查看参数(-u uts 用户空间 -i ipc 硬件通信  -n 网络 -p pid)
2.11 ###容器持久运行
docker exec -it -d 0b8c68efd69容器id /bin/bash    #-d后台
2.12 容器退出继续运行
ctrl +p +q  

或者想尽一切办法 让shell 一直运行 如 tty:true 或 ./xx.sh && tailf /dev/null

2.13 #删除一个 执行完命令的容器。。用于测试
docker run --rm  容器名称  执行的命令  
docker run --rm centos /bin/echo "hehe"

#变量内容是 只列出所有pid kill 删除掉

 docker kill  $(docker ps -a -q)  
2.14 #docker 后台运行容器,并映射一个随机端口

-d 后台运行 -P 映射随机端口 -p 映射指定端口

[root@localhost ~]# docker run -d -P nginx
4aea45e8c64fd36b0c4d094527db8f9db1dcb57e645878b161ada87af00d833a
[root@localhost ~]# docker run -d -p 81:80 nginx
da15c84223d4d483b8ec25e6e1e8bba7cf14bcadfa2f0489699ffb183335856f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
da15c84223d4        nginx               "nginx -g 'daemon of…"   4 seconds ago       Up 2 seconds        0.0.0.0:81->80/tcp      kind_joliot
4aea45e8c64f        nginx               "nginx -g 'daemon of…"   17 minutes ago      Up 17 minutes       0.0.0.0:32768->80/tcp   gifted_hamilton

3 docker 容器数据管理

3.1 挂载本地磁盘到容器

#启动一个名字为volume-test1的centos容器 并且挂载硬盘到/data中

docker run -it --name volume-test1 -v /data centos

#在/var/lib/docker/volumes/下可以查到到挂载的硬盘

[root@localhost volumes]# pwd
/var/lib/docker/volumes

#通过docker inspect 容器id 可以查看到容器挂载信息 挂载到哪个硬盘上

#docker inspect 3095e85d9856 “Mounts”: [ { “Type”: “volume”, “Name”: “52fac9c68987f0af5bff7c9e6f0e46db732c7e0d095ac1cad16a40b22dda8094”, “Source”: “/var/lib/docker/volumes/52fac9c68987f0af5bff7c9e6f0e46db732c7e0d095ac1cad16a40b22dda8094/_data”, “Destination”: “/data”, “Driver”: “local”, “Mode”: “”, “RW”: true, “Propagation”: “” }

#通过挂载信息,往本地磁盘里写入文件,容器也会同步更新文件

[root@localhost _data]# touch 123
[root@localhost _data]# pwd
/var/lib/docker/volumes/52fac9c68987f0af5bff7c9e6f0e46db732c7e0d095ac1cad16a40b22dda8094/_data
#指定本地路径挂载
[root@localhost _data]#  docker run -it -v /root:/opt centos
[root@fb7d22214ff9 /]# cd /opt 
[root@fb7d22214ff9 opt]# ll
total 8
-rw-------. 1 root root 1379 Mar 20 06:42 anaconda-ks.cfg
-rwxr-xr-x  1 root root   95 Mar 20 08:34 ns.sh
#也可以挂载单个文件或指定权限rw ro 
docker run -it  -v /root/.bash_profile:/root/.bash_profile:ro
3.2 从其他容器挂载磁盘

#先挂载一个本地磁盘到nfs容器中

docker run -d --name nfs -v /data centos

#再打开一个容器挂载nfs的磁盘 也就是/data

docker run -it --name test2 --volumes-from nfs  centos

#查看结果

[root@43fecb105976 /]# cd /data
[root@43fecb105976 data]# ll
total 0
-rw-r--r-- 1 root root 0 Mar 20 11:02 hello

4 手动构建docker 镜像容器

4.1 生成一个centos 容器 并安装nginx
docker run -it --name mynginx centos
yum install -y nginx #需要内部下载epel 源
4.2 上传镜像
 docker commit -m "my nginx"  dd2c7525d97b qinshuo/mynginx:v1

#-m 写备注 备注后面写之前容器的id #后面是用户名(git)和版本信息 #检查

[root@localhost _data]# docker images |grep mynginx
\qinshuo/mynginx     vi                  97519b087efa        48 seconds ago      385MB
4.3 启动容器并更改配置
docker run -it --name mynginx qinshuo/mynginx:vi

修改nginx 配置文件

vi /etc/nginx/nginx.conf

最前面加入 daemon off; #将nginx 放到前台运行 而非后台 保持住 防止docker 容器停止

4.4 修改后重新建立镜像
docker commit -m "my nginx 1" 6f2b0985c80d qinshuo/mynginx:v2
4.5 然后开启对外nat 端口 并查看是否持久化运行
docker images 
docker run -d -p 82:80 qinshuo/mynginx:v2 nginx 

-d 后台运行 -p 指定端口 最后的nginx 是执行nginx启动命令 由于是yum 安装有环境变量,如非yum安装需要些绝对路径

ss -lntup|column -c1

5 使用dockerfile 构建容器镜像

5.1 如何编写Dockerfile

docker file 分为四个部分 #基础镜像信息 #维护者信息 #镜像操作指令 #容器启动时执行的命令 实例1-1 创建一个dockerfile

[root@localhost ~]# vim Dockfile
#This is dockerfile
#Version 1
#Author: QinShuo
#Base image
FROM centos

#维护者信息
MAINTAINER Qinshuo qinshuo@csii.com.cn

#Commands 命令
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y nginx


#添加文件(zip文件会自动解压)
ADD index.html /usr/share/nginx/html/index.html

#将nginx 放到前台运行 而非后台
RUN echo "daemon off;"   >> /etc/nginx/nginx.conf

#增加对外端口
EXPOSE 80
#最后执行什么命令
CMD ["nginx"]
5.2 构建镜像

-t 打标签 最后有个. 是镜像放置位置

docker build -t qinshuo/mynginx:v3 .
5.3 启动镜像容器
[root@localhost ~]# docker run -d -p 83:80 qinshuo/mynginx:v3
0e8e834dde3b108cf0b0b36885785ff39937053b7299bdbbd9b55a3a3dd08b83

6 构建registry 私有仓库

6.1 下载并运行registry
docker pull registry
docker run  -d -p 5000:5000 registry
6.2 测试是否运行
  1. 查看本地端口是否打开
  2. 使用命令
[root@localhost ~]# curl http://10.0.16:5000/v2/_catalog
{"repositories":[]}
6.3 重新给个镜像打标签
docker tag nginx 10.0.16:5000/mynginx
6.4 把新的镜像放入私有仓库

#由于新版本无法直接push 需要改配置文件 因为默认http访问在互联网不安全,所以强制要求https 访问。 #本地安装nginx 模拟https

yum install -y nginx
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 docker安装
    • step 1: 安装必要的一些系统工具
      • step 2: 安装GPG证书
        • Step 3: 写入软件源信息
          • Step 4: 更新并安装 Docker-CE
            • step 1: 安装必要的一些系统工具
              • Step 2: 添加软件源信息
                • Step 3: 更新并安装 Docker-CE
                  • Step 4: 开启Docker服务
                  • 2 docker 基本命令
                    • 2.1 #下载一个centos 镜像
                      • 2.2 #删除一个centos 镜像
                        • 2.3 #删除一个正在运行的容器
                          • 2.4 #查看本地docker镜像列表
                            • 2.5 #保存网上镜像
                              • 2.6 #使用本地保存镜像
                                • 2.7 启动容器 并执行命令(命令执行成功后背退出)
                                  • 2.8 查看docker 容器进程
                                    • 2.9 进入容器 多终端 操作同步
                                      • 2.10 可以访问另一个进程的 名称空间 namespace
                                        • 2.11 ###容器持久运行
                                          • 2.12 容器退出继续运行
                                            • 2.13 #删除一个 执行完命令的容器。。用于测试
                                              • 2.14 #docker 后台运行容器,并映射一个随机端口
                                              • 3 docker 容器数据管理
                                                • 3.1 挂载本地磁盘到容器
                                                  • 3.2 从其他容器挂载磁盘
                                                  • 4 手动构建docker 镜像容器
                                                    • 4.1 生成一个centos 容器 并安装nginx
                                                      • 4.2 上传镜像
                                                        • 4.3 启动容器并更改配置
                                                          • 4.4 修改后重新建立镜像
                                                            • 4.5 然后开启对外nat 端口 并查看是否持久化运行
                                                            • 5 使用dockerfile 构建容器镜像
                                                              • 5.1 如何编写Dockerfile
                                                                • 5.2 构建镜像
                                                                  • 5.3 启动镜像容器
                                                                  • 6 构建registry 私有仓库
                                                                    • 6.1 下载并运行registry
                                                                      • 6.2 测试是否运行
                                                                        • 6.3 重新给个镜像打标签
                                                                          • 6.4 把新的镜像放入私有仓库
                                                                          相关产品与服务
                                                                          容器服务
                                                                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                                          领券
                                                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档