Docker容器的基本操作

本文详细介绍了Docker的基本操作,包括查看容器进程、启动和管理容器、保存镜像等。通过`docker ps`命令查看容器状态,使用`docker run`启动容器并设置其运行方式,如交互式、后台运行等。通过`docker exec`进入容器内部执行命令。同时,展示了如何停止、重启和删除容器,以及如何保存和导入容器镜像。最后提到了容器日志查看方法。
摘要由CSDN通过智能技术生成

查看本地的容器进程

[root@ip-10-0-0-45 ec2-user]# docker ps -a //将所有进程列出,包括终止的
CONTAINER ID   IMAGE         COMMAND    CREATED       STATUS                   PORTS     NAMES
b1c240413b16   hello-world   "/hello"   3 hours ago   Exited (0) 3 hours ago             boring_goodall
d39a7729d8fb   hello-world   "/hello"   3 hours ago   Exited (0) 3 hours ago             fervent_tesla
[root@ip-10-0-0-45 ec2-user]# docker ps //列出目前进行中的进程
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

启动容器

docker run是日常用的最频繁用的命令之一,同样也是较为复杂的命令之一
命令格式: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS :选项
-i:表示启动-一个可交互的容器, 并持续打开标准输入
-t:表示使用终端关联到容器的标准输入输出上
-d :表示将容器放置后台运行
–rm:退出后即删除容器
–name :表示定义容器唯一名称
IMAGE :表示要运行的镜像
COMMAND :表示启动容器时要运行的命令*
ARG:参数

[root@ip-10-0-0-45 ec2-user]# docker run -ti 58440236/alpine:v3.10.3 /bin/sh
Unable to find image '58440236/alpine:v3.10.3' locally
v3.10.3: Pulling from 58440236/alpine
89d9c30c1d48: Pull complete 
Digest: sha256:e4355b66995c96b4b468159fc5c7e3540fcef961189ca13fee877798649f531a
Status: Downloaded newer image for 58440236/alpine:v3.10.3
/ # 

//重新开一个终端
[root@ip-10-0-0-45 ec2-user]# docker ps
CONTAINER ID   IMAGE                     COMMAND     CREATED         STATUS         PORTS     NAMES
8835235c1cee   58440236/alpine:v3.10.3   "/bin/sh"   7 minutes ago   Up 7 minutes             cool_gauss

//后台运行容器
[root@ip-10-0-0-45 ec2-user]# docker run -d 58440236/alpine:v3.10.3 /bin/sleep 300
cb66fdcff2695c69711b45fff615112eb517593316e7e0608abd275ec3712cc1
[root@ip-10-0-0-45 ec2-user]# docker ps
CONTAINER ID   IMAGE                     COMMAND            CREATED         STATUS         PORTS     NAMES
cb66fdcff269   58440236/alpine:v3.10.3   "/bin/sleep 300"   5 seconds ago   Up 4 seconds             romantic_mcnulty
[root@ip-10-0-0-45 ec2-user]# ps aux|grep sleep|grep -v grep //查看宿主进程
root      3314  0.7  0.0   1552     4 ?        Ss   09:10   0:00 /bin/sleep 300

进入容器

[root@ip-10-0-0-45 ec2-user]# docker exec -ti cb66fdcff269 /bin/sh
/ # ps
PID   USER     TIME  COMMAND
    1 root      0:00 /bin/sleep 300
    7 root      0:00 /bin/sh
   14 root      0:00 ps
/ # 

停止容器

[root@ip-10-0-0-45 ec2-user]# docker ps
CONTAINER ID   IMAGE                     COMMAND            CREATED         STATUS         PORTS     NAMES
cb66fdcff269   58440236/alpine:v3.10.3   "/bin/sleep 300"   3 minutes ago   Up 3 minutes             romantic_mcnulty
[root@ip-10-0-0-45 ec2-user]# docker stop cb66fdcff269
cb66fdcff269
[root@ip-10-0-0-45 ec2-user]# docker ps -a
CONTAINER ID   IMAGE                     COMMAND            CREATED          STATUS                       PORTS     NAMES
cb66fdcff269   58440236/alpine:v3.10.3   "/bin/sleep 300"   3 minutes ago    Exited (137) 4 seconds ago             romantic_mcnulty
8835235c1cee   58440236/alpine:v3.10.3   "/bin/sh"          19 minutes ago   Exited (0) 9 minutes ago               cool_gauss
b1c240413b16   hello-world               "/hello"           3 hours ago      Exited (0) 3 hours ago                 boring_goodall
d39a7729d8fb   hello-world               "/hello"           4 hours ago      Exited (0) 4 hours ago                 fervent_tesla
[root@ip-10-0-0-45 ec2-user]# docker start d39a7729d8fb //开始容器进程
d39a7729d8fb
[root@ip-10-0-0-45 ec2-user]# docker restart d39a7729d8fb//重启容器进程
d39a7729d8fb

删除容器

[root@ip-10-0-0-45 ec2-user]# docker ps -a
CONTAINER ID   IMAGE                     COMMAND            CREATED          STATUS                       PORTS     NAMES
cb66fdcff269   58440236/alpine:v3.10.3   "/bin/sleep 300"   7 minutes ago    Exited (137) 4 minutes ago             romantic_mcnulty
8835235c1cee   58440236/alpine:v3.10.3   "/bin/sh"          23 minutes ago   Exited (0) 13 minutes ago              cool_gauss
b1c240413b16   hello-world               "/hello"           4 hours ago      Exited (0) 4 hours ago                 boring_goodall
d39a7729d8fb   hello-world               "/hello"           4 hours ago      Exited (0) 2 minutes ago               fervent_tesla
[root@ip-10-0-0-45 ec2-user]# docker rm cb66fdcff269
cb66fdcff269
[root@ip-10-0-0-45 ec2-user]# docker ps -a
CONTAINER ID   IMAGE                     COMMAND     CREATED          STATUS                      PORTS     NAMES
8835235c1cee   58440236/alpine:v3.10.3   "/bin/sh"   23 minutes ago   Exited (0) 13 minutes ago             cool_gauss
b1c240413b16   hello-world               "/hello"    4 hours ago      Exited (0) 4 hours ago                boring_goodall
d39a7729d8fb   hello-world               "/hello"    4 hours ago      Exited (0) 2 minutes ago              fervent_tesla

保存镜像

[root@alice ~]# docker run -d --name alpine_sleep docker.io/mmdghh/alpine:latest /bin/sleep 300s
c3d1aa7a1bc2df47f47621f16e420883b334ef8e242349f1f734ad9cb4533968
[root@alice ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
c3d1aa7a1bc2        mmdghh/alpine:latest   "/bin/sleep 300s"   5 seconds ago       Up 4 seconds                            alpine_sleep
[root@alice ~]# docker exec -it c3d1aa7a1bc2 /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # echo "hello world" >1.txt
/ # ls
1.txt  bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # [root@alice ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
c3d1aa7a1bc2        mmdghh/alpine:latest   "/bin/sleep 300s"   45 seconds ago      Up 44 seconds                           alpine_sleep
[root@alice ~]# docker run -it docker.io/mmdghh/alpine:latest /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # 
写入到容器的文件并不会保存在镜像里

-p 保存到执行命令这一时刻的内容 之后更新的不会报错

[root@alice ~]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
c3d1aa7a1bc2        mmdghh/alpine:latest   "/bin/sleep 300s"   5 minutes ago       Up 4 minutes                            alpine_sleep
[root@alice ~]# docker commit -p alpine_sleep docker.io/mmdghh/alpine:v_1.txt 
sha256:11be5214792460b1e258a6d6e7dbca5dccfddce0d438c0ad9b04d78b147006e0
[root@alice ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mmdghh/alpine       v_1.txt             11be52147924        8 seconds ago       5.55MB
alpine              latest              389fef711851        3 weeks ago         5.58MB
hello-world         latest              bf756fb1ae65        12 months ago       13.3kB
mmdghh/alpine       latest              965ea09ff2eb        14 months ago       5.55MB
[root@alice ~]# docker run -it docker.io/mmdghh/alpine:v_1.txt /bin/sh
/ # ls
1.txt  bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # cat 1.txt 
hello world
/ # [root@alice ~]# 

导入导入容器镜像

导出: docker save image_name/image_id > xxx.tar
导入: docker load -i xxx.tar 或 docker load < xxx.tar

查看容器日志

[root@ip-10-0-0-45 ec2-user]# docker logs b1c240413b16

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值