[云原生专题-20]:容器-docker的常见命令(代码片段)

文火冰糖的硅基工坊 文火冰糖的硅基工坊     2022-11-30     359

关键词:

一、docker引擎的安装与启动

安装docker

yum install docker-ce

启动docker:

systemctl start docker

停止docker:

systemctl stop docker

重启docker:

systemctl restart docker

查看docker状态:

systemctl status docker

开机启动:

systemctl enable docker

查看docker概要信息

docker info

查看docker帮助文档

docker --help

二、容器镜像相关

注意 stop,restart后的容器,或者commit后的镜像,启动环境变量需要重新加载,比如 source /etc/source

我们运行docker容器的时候,使用了-d参数,把容器在后台运行后。

2.1 启动docker容器

docker run -d -i -t <imageID> /bin/bash 

上述命令执行某些命令回报错Failed to get D-Bus connection: Operation not permitted

可使用如下命令启动

docker run -d -i -t <imageID> /usr/sbin/init

这个时候,我们使用docker ps命令,我们就可以知道哪些程序在后台运行。

2.2 我们要怎么进入到docker容器呢?

(1)使用docker attach命令

我们使用

docker attach db3 或者 docker attach d48b21a7e439

db3是后台容器的NAMES,d48b21a7e439是容器的进程ID  CONTAINER ID

然后就进去了这个容器的ssh界面。

但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行

(2)使用docker exec命令

这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下

docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID  CONTAINER ID

 /bin/sh 是固定写法

它也能进入这个容器

2.3 关闭启动重起

docker stop 容器id
 
docker start 容器id
 
docker restart 容器id

查看所有容器,包括关闭的

docker ps -a


2.4 docker提交新的镜像

docker commit afcaf46e8305(容器id) centos-vim(自定义名)


1.停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)

2.查看当前有些什么images

docker images

3.删除images,通过image的id来指定删除谁

docker rmi <image id>

想要删除untagged images,也就是那些id为<None>的image的话可以用

docker rmi $(docker images | grep "^<none>" | awk "print $3")

要删除全部image的话

docker rmi $(docker images -q)

安装portainer 用于管理docker
1、查询当前Portainer镜像,选择start值比较高的

命令:

docker search portainer

2、下载指定portainer镜像

命令:

docker pull portainer/portainer

3、本次只部署单机版,命令如下

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name prtainer-test portainer/portainer

如下图:

参数说明:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口
–restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。

–restart=always:自动重启该容器
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录
–name prtainer-test : 给容器起名为portainer-test

以下为网上
此次操作都是在ubuntu17.01下进行,docker版本是17.10.0-ce,docker-compose是1.17.1.
docker 存在的意义
· 使用dokcer加速本地开发和构建,开发人员可以构建、运行并分享Docker容器,容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境

· 能够让独立服务或应用程序在不同环境中,得到相同的运行结果。

· 用docker 创建隔离环境进行测试

· docker 可以让开发者先在本机上构建一个复杂的程序测试,而不是一开始就在生产环境进行测试

docker概念
· Docker 的常用文档:Docker Documentation | Docker Documentation

· Docker 镜像: 用户基于镜像来运行自己的容器,可以把镜像当做容器的『源代码』,镜像体积很小,易于分享、存储和更新

· Registry: Docker 用 Registry 保存用户构建的镜像,Registry 分为公共和私有两种:

o Docker 公司运营的公共 Registry 叫做 Docker Hub,我们可以在上面注册账号,分享并保存自己的镜像。

o 可以在 Docker Hub 保存自己的私有镜像或者架设自己私有的 Registry

· Docker 容器: 把应用程序或服务打包放进去,容器是基于镜像启动的,容器中可以运行一个或多个进程。

o 镜像是 Docker 生命周期中的构建或打包阶段

o 容器则是启动或执行阶段

docker的使用命令
1 docker 命令介绍

docker --help

管理命令:

  container   管理容器

  image       管理镜像

  network     管理网络

命令:

  attach      介入到一个正在运行的容器

  build       根据 Dockerfile 构建一个镜像

  commit      根据容器的更改创建一个新的镜像

  cp          在本地文件系统与容器中复制 文件/文件夹

  create      创建一个新容器

  exec        在容器中执行一条命令

  images      列出镜像

  kill        杀死一个或多个正在运行的容器    

  logs        取得容器的日志

  pause       暂停一个或多个容器的所有进程

  ps          列出所有容器

  pull        拉取一个镜像或仓库到 registry

  push        推送一个镜像或仓库到 registry

  rename      重命名一个容器

  restart     重新启动一个或多个容器

  rm          删除一个或多个容器

  rmi         删除一个或多个镜像

  run         在一个新的容器中执行一条命令

  search      在 Docker Hub 中搜索镜像

  start       启动一个或多个已经停止运行的容器

  stats       显示一个容器的实时资源占用

  stop        停止一个或多个正在运行的容器

  tag         为镜像创建一个新的标签

  top         显示一个容器内的所有进程

  unpause     恢复一个或多个容器内所有被暂停的进程

2. 更详细的功能参数配置

参数

解释

--api-enable-cors=false

开放远程API调用的 CORS 头信息。这个接口开关对想进行二次开

发的上层应用提供了支持.

-b, --bridge=""

挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none

可以停用容器里的网络.

--bip=""

使用 CIDR 地址来设定网络桥的 IP。注意,此参数和 -b 不能一起使用.

-D, --debug=false

开启Debug模式。例如:docker -d -D

-d, --daemon=false

开启Daemon模式.

--dns=[]

强制容器使用DNS服务器.例如: docker -d --dns 8.8.8.8

--dns-search=[]

强制容器使用指定的DNS搜索域名.例如: docker -d --dns-search

example.com

-e, --exec-driver="native"

强制容器使用指定的运行时驱动.例如:docker -d -e lxc

-G, --group="docker"

在后台运行模式下,赋予指定的Group到相应的unix socket上。

注意,当此参数 --group 赋予空字符串时,将去除组信息。

-g, --graph="/var/lib/docker"

配置Docker运行时根目录

-H, --host=[]

在后台模式下指定socket绑定,可以绑定一个或多个

 tcp://host:port, unix:///path/to/socket, fd://* 或

 fd://socketfd。例如:$ docker -H tcp://0.0.0.0:2375 ps

或者 $ export DOCKER_HOST="tcp://0.0.0.0:2375" $ docker ps

--icc=true

启用内联容器的通信.

--ip="0.0.0.0"

容器绑定IP时使用的默认IP地址.

--ip-forward=true

启动容器的 net.ipv4.ip_forward.

--iptables=true

启动Docker容器自定义的iptable规则.

--mtu=0

设置容器网络的MTU值,如果没有这个参数,选用默认 route MTU,

如果没有默认route,就设置成常量值 1500.

-p, --pidfile="/var/run/docker.pid"

后台进程PID文件路径.

-r, --restart=true

重启之前运行中的容器.

-s, --storage-driver=""

强制容器运行时使用指定的存储驱动,例如,指定使用devicemapper,

可以这样:docker -d -s devicemapper

--selinux-enabled=false

启用selinux支持

--storage-opt=[]

配置存储驱动的参数

--tls=false

启动TLS认证开关

--tlscacert="/Users/dxiao/.docker/ca.pem"

通过CA认证过的的certificate文件路径

--tlscert="/Users/dxiao/.docker/cert.pem"

TLS的certificate文件路径

--tlskey="/Users/dxiao/.docker/key.pem"

TLS的key文件路径

--tlsverify=false

使用TLS并做后台进程与客户端通讯的验证

-v, --version=false

显示版本信息

*注意:其中带有[] 的启动参数可以指定多次,例如

docker run -a stdin -a stdout -a stderr -i -t ubuntu /bin/bash

docker基本
· 查看系统内核

·  uname -r

· 启动docker 境像

· systemctl start docker

· 3.查看docker版本

· docker verison

· 4.显示docker系统的信息

· docker info

操作docker镜像
1.检索image

docker search image-name

2.下载image

docker pull image-name

3.列出镜像列表

docker images

4.删除一个或者多个镜像

docker rmi image-name

5.显示一个镜像的历史

docker history image-name  

6.通过容器创建镜像

*从已经创建的容器中更新镜像,并且提交这个镜像 *使用 Dockerfile 指令来创建一个新的镜像 下面通过已存在的容器创建一个新的镜像。

docker commit -m="First Image" -a="keke" 7a15f99695c0 keke/unbantu:17.10.0

上面命令参数说明:

* -m 提交的描述信息

* -a 指定镜像作者

* 7a15f99695c0 记住这个是容器id,不是镜像id

* keke/unbantu:17.10.0 创建的目标镜像名

1. 在Docker 注册账户,发布的镜像都在这个页面里展示

2. 将上面做的镜像unbantu,起个新的名字unbantu-test

docker tag keke/unbantu:17.10.0 keke/unbantu-test:lastest

1. 登录docker

docker login

4.上传unbantu镜像

docker push keke/unbantu-test:lastest

启动容器
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。

1.在容器中安装新的程序

docker run image-name apt-get install -y -name

2.在容器中运行"echo"命令,输出"hello word"

docker run image-name echo "hello word"

3.交互式进入容器中

docker run -i -t image_name /bin/bash  

注意:在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失.

查看容器
1.列出当前所有正在运行的container

docker ps

2.列出所有的container

docker ps -a  

3.列出最近一次启动的container

docker ps -l  

4.保存对容器的修改 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。

1.保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message

docker commit ID new-image-name

5.操作容器

1.删除所有容器

docker rm `docker ps -a -q`

2.删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container

docker rm Name/ID

3.停止、启动、杀死一个容器

docker stop Name/ID  

docker start Name/ID  

docker kill Name/ID

4.从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps

docker logs Name/ID  

5.列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的

docker diff Name/ID

6.显示一个运行的容器里面的进程信息

docker top Name/ID  

7.从容器里面拷贝文件/目录到本地一个路径

docker cp Name:/container-path to-path  

docker cp ID:/container-path to-path

8.重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10

docker restart Name/ID

9.附加到一个运行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process

docker attach ID #重新启动并运行一个交互式会话shell

注意:attach命令允许你查看或者影响一个运行的容器。你可以在同一时间attach同一个容器。你也可以从一个容器中脱离出来,是从CTRL-C.

保存和加载镜像
当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。

1.保存镜像到一个tar包; -o, --output="" Write to an file

docker save image-name -o file-path

2.加载一个tar包格式的镜像; -i, --input="" Read from a tar archive file

docker load -i file-path

3.从机器A拷贝到机器B

docker save image-name > /home/keke/main.tar

*使用scp将main.tar拷到机器A上:

docker load < /home/keke/main.tar

登录
1.登陆registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username

docker login

发布docker镜像
docker push new-image-name

构建镜像(Dockerfile + docker build)
FROM ...

RUN ...

# 指定容器内的程序将会使用容器的指定端口

# 配合 docker run -p

EXPOSE ...

· RUN: 指定镜像被构建时要运行的命令

· CMD: 指定容器被启动时要运行的命令

· ENTRYPOINT: 同 CMD ,但不会被 docker run -t 覆盖

· WORKDIR: CMD/ENTRYPOINT 会在这个目录下执行

· VOLUME

· ADD

· COPY

docker history images-name

1.从新镜像启动容器

docker run -d -p 4000:80 --name [name] #可以在 Dokcer 宿主机上指定一个具体的端口映射到容器的80端口上

守护容器
docker run -d container-name #创建守护容器

docker top container-name #查看容器内进程

docker exec container-name touch a.txt #在容器内部运行进程

docker stop container-name #停止容器

关于docker
觉得此文章不错可以给我star! 如果还有遇到问题可以加我微信Sen0676备注下来自github,进go实战群详细交流!

参考资料
官方英文资源
· Docker官网:http://www.docker.com

· Docker windows入门:Redirecting…

· Docker Linux 入门:Redirecting…

· Docker mac 入门:Redirecting…

· Docker 用户指引:Redirecting…

· Docker 官方博客:Docker Blog | App Development News and Thought Leadership | Docker

· Docker Hub: Docker Hub

· Docker开源: Open Source Container Project Collaboration | Docker

中文资源
· Docker中文网站:http://www.docker.org.cn

· Docker中文文档:Docker中文文档 Docker概述-DockerInfo

· Docker安装手册:Docker支持的安装方式 - Docker安装手册 - docker中文社区

· 一小时Docker教程 :https://blog.csphere.cn/archives/22

· Docker中文指南:安装 | Docker 中文指南

其它资源
· Docker 快速手册!

· Docker 教程

· MySQL Docker 单一机器上如何配置自动备份

· https://segmentfault.com/t/docker

· GitHub - moby/moby: Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

· Docker - OpenStack

· Docker - ArchWiki
 

[云原生专题-18]:容器-docker自带的集群管理工具swarm-手工搭建集群服务全过程详细解读

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122743643目录准备工作:集群规划第一步:搭建云服务器1.1安装服... 查看详情

云原生•dockerdocker常用命令总结(值得收藏)(代码片段)

...#xff0c;Docker是一个开源的应用容器引擎。直通车:【云原生•Docker】初识Docker和Docker的坏境搭建(保姆级教学)作为一名开发或者运维人员,掌握Dcoker的命令是必不可少的。Docker命令可以让我们更好的利用他提高我们的工作... 查看详情

[云原生专题-10]:容器-docker的修改保存共享:commitsaveload-v(代码片段)

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122709124目录前言:第1章Docker的修改:docker exec第2章docker修改内... 查看详情

云原生之docker容器的存储管理(代码片段)

一、检查本地docker环境1.检查宿主机系统版本[root@docker~]#cat/etc/centos-releaseCentOSLinuxrelease7.6.1810(Core)2.检查docker版本[root@docker~]#docker-vDockerversion20.10.18,buildb40c2f6二、创建一个测试httpd容器1.创建测试目录[root& 查看详情

『云原生·docker』docker-compose容器编排(代码片段)

...主要分为以下六大部分,正在更新中,尽请期待!『云原生·生之门』『云原生·前置知识』『云原生·Docker』『云原生·Kubernetes』『云原生·KubeSphere』『云原生·DevOps』🚩点击关注本专栏提示:已经更新的或正在更新的... 查看详情

云原生docker进阶--阿里云服务器安装dockercompose与初体验

一、什么是DockerCompose?docker-compose是基于docker的开源项目,托管于github上,由python实现,调用docker服务的API负责实现对docker容器集群的快速编排,即通过一个单独的yaml文件,来定义一组相关的容器来为一个项目服务。DockerCompose... 查看详情

云原生之使用docker部署linux命令大全搜索工具(代码片段)

云原生之使用Docker部署Linux命令大全搜索工具一、LinuxCommand介绍二、检查本地部署环境1.检查docker版本2.检查docker状态三、下载linux-command镜像四、部署linux-command1.创建linux-command容器2.检查linux-command容器状态五、访问linux-command的web... 查看详情

云原生之使用docker部署linux命令大全搜索工具(代码片段)

云原生之使用Docker部署Linux命令大全搜索工具一、LinuxCommand介绍二、检查本地部署环境1.检查docker版本2.检查docker状态三、下载linux-command镜像四、部署linux-command1.创建linux-command容器2.检查linux-command容器状态五、访问linux-command的web... 查看详情

[云原生专题-11]:容器-如何构建自己的docker镜像:dockerdockerfile(代码片段)

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122713131目录前言:第1章(方法1):动态构建:基于... 查看详情

云原生丨docker系列3docker容器的基本操作方法(代码片段)

前言在上一篇文章中我们学习了Docker镜像的基本操作方法,容器是基于镜像创建的,容器中的进程依赖于镜像中的文件,那么本篇文章我们就来深入学习容器的基本操作方法。目录一、新建并启动🌟二、启动已终... 查看详情

云原生一文细数kubernetes常见20道问题(代码片段)

1、K8S是什么?2、容器和主机部署应用的区别是什么?3、K8S架构的组成是什么?4、kubenetes针对pod资源对象的健康监测机制5、如何控制滚动更新过程?6、镜像下载策略是什么?7、image的状态有哪些?8、pod... 查看详情

猿创征文|云原生领域之容器日常使用工具推荐(代码片段)

猿创征文|云原生领域之容器日常使用工具推荐一、云原生介绍1.云原生定义2.容器技术简介3.云原生相关工具导航二、Docker1.Docker介绍①Docker简介②Docker特点③Docker的三个基本概念④Docker的架构图2.Docker的优势3.Docker的使用效果①... 查看详情

云原生之docker的容器资源管理

云原生之Docker的容器资源管理一、检查本地docker环境1.检查系统版本2.检查Docker状态二、Cgroup和NameSpace介绍1.Cgroup简介2.NameSpace简介3.容器的资源隔离三、容器的资源限额1.容器中CPU的使用限额①运行一个压力测试容器②新开启终端... 查看详情

云原生之使用docker部署centos系统测试环境(代码片段)

云原生之使用docker部署centos系统测试环境一、检查本地服务器系统版本二、检查docker版本三、检查docker状态四、下载centos镜像五、创建centos容器1.运行cnentos容器2.进入容器内六、centos容器内部测试1.安装ifconfig命令的软件包2.查看... 查看详情

云原生docker09-docker网络详解(代码片段)

【云原生|Docker】09-Docker网络详解文章目录【云原生|Docker】09-Docker网络详解前言网络详解bridge网络基于bridge网络的容器访问外部网络外部网络访问基于bridge网络的容器host网络none网络container网络自定义网络自定义bridge网络容器的... 查看详情

云原生之docker实战容器的资源限制使用方法

【云原生之Docker实战】容器的资源限制使用方法一、容器资源限制介绍二、检查本地Docker状态三、查看本地容器系统相关文件1.查看容器配置目录2.查看内存相关文件3.查看cpu相关文件四、容器内存资源的限制1.查看内存限制的选... 查看详情

云原生kubernetes系列第五篇kubeadmv1.20部署k8s集群架构(人生这道选择题,总会有遗憾)(代码片段)

系列文章目录😜即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔😜收录至专栏云原生😜【云原生Docker系列第一篇】Docker镜像管理😜【云原生Docker系列第二篇】Docker容器管理😜【云... 查看详情

云原生容器技术3云原生容器技术概要介绍-容器技术基础-docker

参考https://edu.aliyun.com/lesson_2553_27359#_27359 查看详情