Linux ---------- container

docker commonly used commands draw https://www.cnblogs.com/cblogs/p/dockerCommand.html

I. Introduction vessel

Docker help system administrators and programmers to develop applications in a container, and can be extended to hundreds of thousands of nodes, vessels and VM (Virtual Machine) The main difference is that the container provides a process-based isolation, and provides virtual machine the complete isolation of resources. Virtual machine may take a minute to start, but only a second or less of the container, the container using the host operating system kernel and the virtual machine uses a separate kernel, Docker One of the limitations is that it can only be in 64 bit operating systems.

Second, the simple installation vessel

Environment:
System version: CentOS Linux release 7.6.1810 (Core)
kernel version: 3.10.0-957.el7.x86_64

##Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:
[root@186 ~]# yum install docker* -y
...........................................................

##如果报错就安装三个依赖包,yum-utils提供yum-config-manager包,用来管理yum配置文件;lv2和device-mapper-persistent-data为dockerdevicemapper存储设备的必须依赖
[root@186 ~]# yum install -y yum-utils device-mapper*  lvm2
................................................................................................

##安装成功就启动服务,查看服务状态检查是否启动成功
[root@186 ~]# systemctl start docker
[root@186 ~]# systemctl enable docker.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

[root@186 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 四 2019-08-15 15:00:22 CST; 16s ago
     Docs: http://docs.docker.com
 Main PID: 8229 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─8229 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtim...
           └─8234 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics...

8月 15 15:00:20 186 dockerd-current[8229]: time="2019-08-15T15:00:20.993812526+08:00" level=info msg="libcontainerd: n... 8234"
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.077694666+08:00" level=info msg="Graph migration ...conds"
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.078553209+08:00" level=info msg="Loading containe...tart."
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.099355199+08:00" level=info msg="Firewalld running: true"
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.261051865+08:00" level=info msg="Default bridge (...dress"
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.425824071+08:00" level=info msg="Loading containe...done."
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.492111727+08:00" level=info msg="Daemon has compl...ation"
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.492745036+08:00" level=info msg="Docker daemon" c...1.13.1
8月 15 15:00:22 186 systemd[1]: Started Docker Application Container Engine.
8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.500602634+08:00" level=info msg="API listen on /v....sock"
Hint: Some lines were ellipsized, use -l to show in full.

##查看docker版本。docker版本为1.13.1,API版本为1.26
[root@186 ~]# docker version 
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      7f2769b/1.13.1
 Built:           Mon Aug  5 15:09:42 2019
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      7f2769b/1.13.1
 Built:           Mon Aug  5 15:09:42 2019
 OS/Arch:         linux/amd64
 Experimental:    false

##下载官方我CentOS镜像到本地并确认
[root@186 ~]# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ... 
latest: Pulling from docker.io/library/centos
8ba884070f61: Pull complete 
Digest: sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3c
Status: Downloaded newer image for docker.io/centos:latest
[root@186 ~]# docker images centos
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              9f38484d220f        5 months ago        202 MB

##切入到容器中,我们可以看到 CentOS 容器已经被启动,并且我们看到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。断开输入exit
[root@186 ~]# docker run -i -t centos /bin/bash
[root@31a625f874c1 /]# ip a
bash: ip: command not found
[root@31a625f874c1 /]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

##显示当前正在运行容器的列表
[root@186 ~]# docker ps -a 
[root@186 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
139e4dee63e1        centos              "/bin/bash"         19 seconds ago      Exited (0) 18 seconds ago                         sad_tesla
31a625f874c1        centos              "/bin/bash"         26 minutes ago      Exited (127) 25 minutes ago                       zealous_saha

Third, the containers commonly used commands

Management commands:

  container   管理容器
  image       管理镜像
  network     管理网络
  node        管理Swarm节点
  plugin      管理插件
  secret      管理Docker secrets
  service     管理服务
  stack       管理Docker stacks
  swarm       管理Swarm集群
  system      查看系统信息
  volume      管理卷

Such as: docker container ls show all containers

Normal command:

  attach     进入一个运行的容器
  build      从一个DockerFile构建镜像
  commit     从容器创建一个镜像
  cp          从容器和主机文件系统之间拷贝文件 
  create      创建一个容器
  diff        检查容器文件系统上的更改
  events      从服务器获取实时事件
  exec        在正在运行的容器中运行命令
  export      将容器的文件系统导出为tar存档
  history     显示镜像的历史记录
  images      查看镜像列表
  import      从归档文件中创建镜像
  info        显示系统范围的信息
  inspect     返回Docker对象的低级信息
  kill        kill运行中的容器
  load        从存档或者STDIN加载镜像
  login       登陆docker镜像仓库
  logout      退出docker镜像仓库
  logs        获取一个容器的日志
  pause       暂停一个或多个容器中的所有进程
  port        查看端口映射或容器的特定映射列表
  ps          查看容器列表
  pull        从镜像仓库拉取镜像
  push        将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
  rename      重命名容器
  restart     重启容器
  rm          删除容器
  rmi         删除镜像
  run         创建一个新的容器并运行一个命令
  save        将指定镜像保存成 tar 归档文件
  search      从Docker Hub搜索镜像
  start       启动容器
  stats       实时显示容器资源使用情况的统计信息
  stop       停止容器
  tag         标记本地镜像,将其归入某一仓库
  top         展示一个容器中运行的进程
  unpause     恢复容器中所有的进程
  update      更新容器配置
  version    显示Docker的版本信息
  wait        阻塞直到容器停止,然后打印退出代码

Such as: docker images show all mirrors

3.1 run to create container

docker run command format

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  
 
  -d, --detach=false         指定容器运行于前台还是后台,默认为false   
  -i, --interactive=false   打开STDIN,用于控制台交互  
  -t, --tty=false            分配tty设备,该可以支持终端登录,默认为false  
  -u, --user=""              指定容器的用户  
  -a, --attach=[]            标准输入输出流和错误信息(必须是以非docker run -d启动的容器)
  -w, --workdir=""           指定容器的工作目录 
  -c, --cpu-shares=0        设置容器CPU权重,在CPU共享场景使用  
  -e, --env=[]               指定环境变量,容器中可以使用该环境变量  
  -m, --memory=""            指定容器的内存上限  
  -P, --publish-all=false    指定容器暴露的端口  
  -p, --publish=[]           指定容器暴露的端口 
  -h, --hostname=""          指定容器的主机名  
  -v, --volume=[]            给容器挂载存储卷,挂载到容器的某个目录  
  --volumes-from=[]          给容器挂载其他容器上的卷,挂载到容器的某个目录
  --cap-add=[]               添加权限,权限清单详见:http://linux.die.net/man/7/capabilities  
  --cap-drop=[]              删除权限,权限清单详见:http://linux.die.net/man/7/capabilities  
  --cidfile=""               运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法  
  --cpuset=""                设置容器可以使用哪些CPU,此参数可以用来容器独占CPU  
  --device=[]                添加主机设备给容器,相当于设备直通  
  --dns=[]                   指定容器的dns服务器  
  --dns-search=[]            指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件  
  --entrypoint=""            覆盖image的入口点  
  --env-file=[]              指定环境变量文件,文件格式为每行一个环境变量  
  --expose=[]                指定容器暴露的端口,即修改镜像的暴露端口  
  --link=[]                  指定容器间的关联,使用其他容器的IP、env等信息  
  --lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc时使用  
  --name=""                  指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字  
  --net="bridge"             容器网络设置:
                                bridge 使用docker daemon指定的网桥     
                                host     //容器使用主机的网络  
                                container:NAME_or_ID  >//使用其他容器的网路,共享IP和PORT等网络资源  
                                none 容器使用自己的网络(类似--net=bridge),但是不进行配置 
  --privileged=false         指定容器是否为特权容器,特权容器拥有所有的capabilities  
  --restart="no"             指定容器停止后的重启策略:
                                no:容器退出时不重启  
                                on-failure:容器故障退出(返回值非零)时重启 
                                always:容器退出时总是重启  
  --rm=false                 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)  
  --sig-proxy=true           设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 

Example of use:

[root@186 ~]# docker run -p 8090:8080 -p 50000:50000 --restart always --link Redis:redis --name jenkins -v /home/jenkins:/home/jenkins_home --privileged=true dokcer.io/jenkins/jenkins
     -p:把容器的8080端口映射到宿主机8090上
     -v:主机的目录/home/jenkins映射到容器的目录/home/jenkins_home
     --name:给容器起个名字jenkins,docker.io/jenkins/jenkins是你下载的镜像
     --restart:always 容器退出时总是重启
  --privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法
     --link:为redis容器起个别名Redis,访问的时候使用别名Redis

Fourth, the main command examples

## 拉取/上传 pull---  从国外的官方镜像仓库拉取镜像,不指定版本就默认是最新版本,因为网速问题更推荐从国内阿里云等镜像获取。docker push推送本地镜像到服务器
[root@186 ~]# docker pull redis
Using default tag: latest
Trying to pull repository docker.io/library/redis ... 
latest: Pulling from docker.io/library/redis
1ab2bdfe9778: Pull complete 
966bc436cc8b: Pull complete 
c1b01f4f76d9: Pull complete 
8a9a85c968a2: Pull complete 
8e4f9890211f: Pull complete 
93e8c2071125: Pull complete 
Digest: sha256:9755880356c4ced4ff7745bafe620f0b63dd17747caedba72504ef7bac882089
Status: Downloaded newer image for docker.io/redis:latest


##镜像images---(images列出所有镜像,images -a列出所有镜像包括历史,images --tree显示镜像的所有层,rmi <IMAGE ID>删除一个镜像)
[root@186 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/redis     latest              f7302e4ab3a8        17 hours ago        98.2 MB
docker.io/nginx     latest              4733136e5c3c        24 hours ago        126 MB
docker.io/mysql     latest              62a9f311b99c        25 hours ago        445 MB
docker.io/centos    latest              9f38484d220f        5 months ago        202 MB

## 日志logs ---(查看某容器的日志)
[root@186 ~]# docker logs -f -t --tail 10 cc1084e70cab
2019-08-15T07:41:23.641939000Z [root@cc1084e70cab /]# df -h
2019-08-15T07:41:23.642167000Z Filesystem               Size  Used Avail Use% Mounted on
2019-08-15T07:41:23.642363000Z overlay                   10G  1.5G  8.6G  15% /
2019-08-15T07:41:23.642591000Z tmpfs                    487M     0  487M   0% /dev
2019-08-15T07:41:23.642778000Z tmpfs                    487M     0  487M   0% /sys/fs/cgroup
2019-08-15T07:41:23.642973000Z /dev/mapper/centos-root   10G  1.5G  8.6G  15% /etc/hosts
2019-08-15T07:41:23.643159000Z shm                       64M     0   64M   0% /dev/shm
2019-08-15T07:41:23.643346000Z tmpfs                    487M     0  487M   0% /proc/acpi
2019-08-15T07:41:23.643623000Z tmpfs                    487M     0  487M   0% /proc/scsi
2019-08-15T07:41:23.643863000Z tmpfs                    487M     0  487M   0% /sys/firmware


## 网络network---(create创建,inspect查看,disconnet网络中移除或断开某容器,rm删除)
[root@186 ~]# docker network create mynet
e78d79314337a7cb9a3acfb340f624272fcfb53126866c463c87d8d2d2cdb980
[root@186 ~]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "e78d79314337a7cb9a3acfb340f624272fcfb53126866c463c87d8d2d2cdb980",
        "Created": "2019-08-15T15:53:53.833288083+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

Guess you like

Origin www.cnblogs.com/wangchengshi/p/10912204.html