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 name
或 docker start -ai name
即可进入容器,在容器中使用 ^P + ^Q 分离容器。
docker attach name
和 docker 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