«

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容器内的第一个进程(初始命令)
必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!
业务在容器中运行:夯住,启动服务

https://hub.docker.com/

还没收到回复