Docker常用操作
- 从仓库拉取镜像
[root@localhost ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
- 查看当前拥有镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
- 查看当前所有容器(-a 包含退出的)
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ab3a4609ecc hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago sleepy_turing
- 删除已停止的容器
[root@localhost ~]# docker rm 0ab3a4609ecc
0ab3a4609ecc
- 删除所有镜像(-f 包含当前起了容器的镜像)
[root@localhost ~]# docker rmi -f $(docker images -qa)
Untagged: hello-world:latest
Untagged: hello-world@sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
- 伪终端交互式生成容器(exit:容器停止退出 ctrl+P+Q:容器不停止退出)
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 5 months ago 231MB
[root@localhost ~]# docker run -it 5d0da3dc9764
[root@3dd0a3a9cca4 /]#
- 启动退出的容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dd0a3a9cca4 5d0da3dc9764 "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago loving_beaver
2a40735a772a feb5d9fea6a5 "/hello" 7 minutes ago Exited (0) 7 minutes ago exciting_buck
[root@localhost ~]# docker start 3dd0a3a9cca4
3dd0a3a9cca4
- 停止运行的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dd0a3a9cca4 5d0da3dc9764 "/bin/bash" 4 minutes ago Up About a minute loving_beaver
[root@localhost ~]# docker stop 3dd0a3a9cca4
3dd0a3a9cca4
- 删除已停止的容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dd0a3a9cca4 5d0da3dc9764 "/bin/bash" 5 minutes ago Exited (0) 4 seconds ago loving_beaver
[root@localhost ~]# docker rm 3dd0a3a9cca4
3dd0a3a9cca4
- 删除多个容器
[root@localhost ~]# docker ps -qa|xargs docker rm
2a40735a772a
- 守护启动容器(后台运行,必须有一个前台进程)
root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo hello ztf;sleep 2;done"
60a42445f78cbea48f1d23971575084986aee9853255ec9766c9de31094e2f69
[root@localhost ~]# docker logs 60a42445
hello ztf
hello ztf
- 查看容器内的进程
[root@localhost ~]# docker top 60a42445
UID PID PPID C STIME TTY TIME CMD
root 3115 3097 0 23:52 ? 00:00:00 /bin/sh -c while true;do echo hello ztf;sleep 2;done
root 3186 3115 0 23:53 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2
- 查看容器内部细节
[root@localhost ~]# docker inspect 60a42445
[
{
"Id": "60a42445f78cbea48f1d23971575084986aee9853255ec9766c9de31094e2f69",
"Created": "2022-02-19T15:52:08.782734158Z",
-
进入正在运行的容器
- 不启动新终端
[root@localhost ~]# docker exec -it 60a42445f78c ls -l /tmp total 12 -rwx------. 1 root root 701 Sep 15 14:17 ks-script-4luisyla -rwx------. 1 root root 671 Sep 15 14:17 ks-script-o23i7rc2
- 启动新终端
[root@localhost ~]# docker attach 60a42445f78c hello ztf hello ztf
-
copy容器内的内容
[root@localhost ~]# docker cp 60a42445f78c:/tmp/ks-script-4luisyla .
- 8080端口启动tomcat
[root@localhost ~]# docker run -d -p 8080:8080 tomcat
8477d8fd9c51233285a2a77831e7a3bb41d87e790180632825e7a5ec34c5320a
-
使用mysql
- 运行mysql
[root@localhost mysql]# docker run -d -p 3306:3306 --name mysql -v /ztf/mysql/conf:/etc/mysql/conf.d -v /ztf/mysql/logs:/logs -v /ztf/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
- docker本地连接mysql
[root@localhost ~]# docker exec -it fc35ef1a9d8a bash root@fc35ef1a9d8a:/# mysql -uroot -p123456
- 如果远程客户端无法访问
- 防火墙阻拦
systemctl stop firewalld
- 需要进入docker本地客户端设置远程访问账号
mysql> use mysql; mysql> grant all privileges on *.* to root@'%' identified by "password";
- 防火墙阻拦
-
使用redis
[root@localhost redis]# docker run -p 6379:6379 -v /ztf/redis/data:/data -v /ztf/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes [root@localhost redis]# docker exec -it e83907c9d793 redis-cli 127.0.0.1:6379>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义