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容器内的第一个进程(初始命令)必须一直处于前台运行状态(必须夯住),否则这个容器就会处于退出状态。
技术是没有终点的,也是学不完的,最重要的是活着、不秃。 学习看书还是看视频,都不重要,重要的是学会,欢迎关注,我们的目标---不秃。
---更多运维开发交流及软件包免费获取请加V: Linuxlaowang