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容器內的第一個進程(初始命令)必須一直處於前台運行狀態(必須夯住),否則這個容器就會處於退出狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM