Docker 容器管理
指尖二进制 • 1 年前 • 822 次点击 • DOCKER
[TOC]
docker run -d -p 80:80 nginx
run(创建并运行一个容器)
-d 放在后台
-p 端口映射
-v 源地址(宿主机):目标地址(容器)
1:启动容器
docker run -it --name /bin/bash
-it分配交互式的终端 --name指定容器的名字 /bin/sh覆盖容器的初始命令
docker run == docker create + docker start
[root@docker-01 ~]# docker run -it centos:6.9 /bin/bash
[root@218a89ba533f /]# cat /etc/redhat-release #查看系统为centos6.9
CentOS release 6.9 (Final)
[root@218a89ba533f /]# ps -ef|grep -v ps #只有一个进程
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:48 pts/0 00:00:00 /bin/bash
[root@218a89ba533f /]# yum install iputils -y
[root@218a89ba533f /]# ping www.baidu.com -c 4 #可以上网,需要开启ipv4转发
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=52 time=13.4 ms
2:查看容器列表
docker container ls默认状态下只显示正在运行的容器
docker container == docker ps docker container ls == docker ps -a
[root@docker-01 ~]# docker container ls
[root@docker-01 ~]# docker ps
参数 释疑
CONTAINER ID 容器id
IMAGE 使用的镜像名字
COMMAND 容器的初始命令
CREATED 容器的创建时间
STATUS 容器的状态
PORTS 有没有做端口映射
NAMES 容器的名字
--name 可以指定名字启动
[root@docker-01 ~]# docker run --name centos6.9 -itd centos:6.9 /bin/bash
[root@docker-01 ~]# docker container ls -a
3:停止与启动容器
停止和启动容器可以使用容器id和容器的名字
[root@docker-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f86dc973bfe nginx "nginx -g 'daemon of…" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp elated_elbakyan
[root@docker-01 ~]# docker container stop 3f86dc973bfe #选择id停止容器
3f86dc973bfe
[root@docker-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker-01 ~]# docker container start elated_elbakyan #选择名字启动容器
elated_elbakyan
[root@docker-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f86dc973bfe nginx "nginx -g 'daemon of…" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp elated_elbak
4:杀死容器
docker kill container_name or container_id
[root@docker-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f86dc973bfe nginx "nginx -g 'daemon of…" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp elated_elbakyan
[root@docker-01 ~]# docker kill 3f86dc973bfe
[root@docker-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5:进入容器
容器最终是宿主机的某一个进程
[root@docker-01 ~]# yum install -y psmisc
[root@docker-01 ~]# docker container exec -it 3f86dc973bfe /bin/bash
root@3f86dc973bfe:/# sleep 100
[root@docker-01 ~]# pstree #再打开一个虚拟终端进行查看
systemd─┬─VGAuthService
├─abrt-watch-log
├─abrtd
├─agetty
├─auditd───{auditd}
├─chronyd
├─containerd─┬─containerd-shim─┬─bash───sleep
│ │ ├─nginx───nginx
│ │ └─9*[{containerd-shim}]
│ └─11*[{containerd}]
更新Debian源
查看版本:Debian buster
root@3f86dc973bfe:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
https://mirror.tuna.tsinghua.edu.cn/help/debian/ 进入到清华镜像选择buster版本更新一下
root@3f86dc973bfe:/# echo '# deb http://snapshot.debian.org/archive/debian/20200224T000000Z buster main
deb http://deb.debian.org/debian buster main
# deb http://snapshot.debian.org/archive/debian-security/20200224T000000Z buster/updates main
deb http://security.debian.org/debian-security buster/updates main
# deb http://snapshot.debian.org/archive/debian/20200224T000000Z buster-updates main
deb http://deb.debian.org/debian buster-updates main
' > /etc/apt/sources.list
6:删除容器
删除容器:docker rm 容器id或容器名称
[root@docker-01 ~]# docker ps -a
[root@docker-01 ~]# docker rm e2e2e3020697 d10431442ed5 a8ba477984aa
[root@docker-01 ~]# docker rm -f `docker ps -a -q` #批量删除容器
-q 静默输出,只显示容器id
总结:
docker容器内的第一个进程(初始命令)
必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!
业务在容器中运行:夯住,启动服务