docker 操作手册(一)入门操作

参考

https://yeasy.gitbook.io/docker_practice

创建容器

我们尝试创建一个容器:

# docker run --name warp ubuntu
# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
d0be8350e8ec   ubuntu    "/bin/bash"   4 seconds ago   Exited (0) 3 seconds ago             warp

可以发现容器立刻被终止了,这是因为默认运行的是bash,而容器没有被分配伪终端,bash将退出,没有前台程序运行容器将自动终止。

使用以下命令创建容器:

# docker run --name warp -it ubuntu
root@23fdad10e360:/#

我们将进入容器并能与bash交互。

常用参数意义如下:

-i 让容器的标准输入保持打开
-t 让docker分配一个伪终端并绑定到容器的标准输入上
-d 分离到后台运行

列出镜像和容器

# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       22.04     58db3edaf2be   3 weeks ago   77.8MB
ubuntu       latest    58db3edaf2be   3 weeks ago   77.8MB

列出正在运行的容器
# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS              PORTS                                       NAMES
cd7b49132dab   ubuntu    "/bin/bash"   27 minutes ago   Up About a minute   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   warp

# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS              PORTS                                       NAMES
cd7b49132dab   ubuntu    "/bin/bash"   27 minutes ago   Up About a minute   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   warp

# docker container ls -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS                                       NAMES
cd7b49132dab   ubuntu    "/bin/bash"   27 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   warp

删除镜像和容器

# docker image rm ubuntu:22.04
Untagged: ubuntu:22.04

# docker container rm warp
Error response from daemon: You cannot remove a running container cd7b49132dab2267b2e528cec3a9b1cc989fd1730a44ae328e60d478b3409174. Stop the container before attempting removal or force remove

无法删除正在运行的容器,-f强制删除
# docker container rm warp -f
warp

直接rm也可以
# docker rm systemd-ubuntu
systemd-ubuntu

清理所有停止运行的容器
# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

分离与连接

在宿主机上使用 docker attach namedocker start -ai name 即可进入容器,在容器中使用 ^P + ^Q 分离容器。

docker attach namedocker start -ai name 的区别是:前者一定要容器正在运行,并且会输出一句 $PS1。

Ctrl+C 也可以分离容器,但是仅当用-t(没有-i)启动容器时。

为避免容器退出,通常使用 docker exec bash 来启动新的 bash 来连接容器:

# docker exec -it warp bash
root@087d0c3227c5:/# echo $$
10

# docker start -ai warp
root@087d0c3227c5:/# echo $$
1
posted @ 2023-02-19 18:42  develon  阅读(74)  评论(0编辑  收藏  举报