docker容器基础管理与如何进入容器(篇一)

什么是容器?

容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的系统文件,ip地址,主机名等,越来越多的公司在用容器,主要是容器更省成本。

#容器的安装
# rm -fr /etc/yum.repos.d/local.repo
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
# yum install docker-ce -y
# systemctl start docker.service
# systemctl enable docker.service
[root@docker01 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        42e35e61f3
 Built:             Mon Jun  1 09:13:48 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

docker主要有:镜像、容器、仓库、网络、存储、镜像

#镜像(把一堆的系统文件打成一个压缩包),每启动一个docker必须要一个镜像,仓库存储镜像,docker要运行必须依赖网络,然后必须进行监控。
docker 的主要目标是构建、运输、处处运行。
#安装nginx
[root@docker01 ~]# docker run -d -p 80:80 nginx

#测试安装
[root@docker01 ~]# curl -I 10.0.0.71:80
HTTP/1.1 200 OK
Server: nginx/1.19.0
Date: Tue, 09 Jun 2020 10:14:53 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 May 2020 15:00:20 GMT
Connection: keep-alive
ETag: "5ecd2f04-264"
Accept-Ranges: bytes

docker基本命令

#搜索镜像,如查看Tomcat镜像(优先选择官方镜像start最高的,如果没有官方镜像,选择start最高的)
[root@docker01 ~]# docker search tomcat

#下载tomcat镜像,不指定版本,默认最新版
[root@docker01 ~]# docker pull tomcat
#指定版本tomcat8.0版本
[root@docker01 ~]# docker pull tomcat:8.0

#查看镜像列表
[root@docker01 ~]# docker image ls
#导出镜像(将tomcat8.0镜像导出并命名为docker_centos_tomcat8.0.tar.gz)
[root@docker01 ~]# docker image save tomcat:8.0 -o docker_centos_tomcat8.0.tar.gz
[root@docker01 ~]# ls
anaconda-ks.cfg  docker_centos_tomcat8.0.tar.gz

#删除镜像(删除tomcat8.0镜像)
[root@docker01 ~]# docker image rm tomcat:8.0 

如何进入容器

#使用-it进入centos:6.9容器
[root@docker01 ~]# docker run -it centos:6.9
#容器自己的内核,与宿主机完全没关系
[root@200732637aef /]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
#有自己的根分区
[root@200732637aef /]# ls /
bin  etc   lib    lost+found  mnt  proc  sbin     srv  tmp  var
dev  home  lib64  media       opt  root  selinux  sys  usr
#有自己独立的网卡
[root@200732637aef /]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:656 (656.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
[root@200732637aef /]# exit

#--name表示为容器起名字(容器名字不能重复)
[root@docker01 ~]# docker run -it --name laowang centos:6.9

容器管理

#启动一个容器
[root@docker01 ~]# docker container start 6d14f5a72ce1 
#停止一个容器
[root@docker01 ~]# docker container stop 6d14f5a72ce1 
#异常退出容器(一般正常退出)
[root@docker01 ~]# docker container kill 6d14f5a72ce1 .
#查看进程
[root@docker01 ~]# docker ps -a -l
#注意不能删除正在运行的容器


#删除所有容器
[root@docker01 ~]# docker rm -f `docker ps -a -q`
6d14f5a72ce1
200732637aef
609fbf238bde
66a6f94df5f6

#进入正在运行的容器(先让容器夯住)
[root@docker01 ~]# docker run -d centos:6.9 tail -f /etc/hosts
384bcfcf04141f103a89c6c18f4544cadfd44840c6c9d7b5c708bf85fb0d6234

[root@docker01 ~]# docker exec -it 384bcfcf0414 /bin/bash
[root@384bcfcf0414 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 10:22 ?        00:00:00 tail -f /etc/hosts
root          6      0  0 10:23 pts/0    00:00:00 /bin/bash
root         17      6  0 10:23 pts/0    00:00:00 ps -ef


#生产环境跑的是业务(两条命令可以让容器一直运行下去)
[root@docker01 ~]# docker run -d -it centos:6.9 /bin/bash
[root@docker01 ~]# docker run -d centos:6.9 tail -f /etc/hosts

总结:docker容器内的第一个进程(初始命令)必须一直处于前台运行状态(必须夯住),否则这个容器就会处于退出状态。

posted @ 2020-06-11 19:04  老王教你学Linux  阅读(822)  评论(0编辑  收藏  举报