Docker操作指南
概念解释:
镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起供运行启动,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,容器之间是隔离,容器对外也是不可见的
镜像托管平台(DockerHub):DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。国内的网易云镜像服务、阿里云镜像库等都是类似的作用
ps:docker的环境安装可自行看官网,这里不做赘述了
- 第一阶段—镜像初始化:
docker pull:拉取镜像
docker push:推送镜像
docker images:查看镜像列表
docker rmi:删除镜像
docker save:打包镜像成tar包
docker load:加载tar镜像包
- 第二阶段—启停阶段
docker run:创建并运行一个容器,处于运行状态
docker rm:删除一个容器
docker start:让一个停止的容器再次运行
docker stop:停止一个运行的容器
docker pause:让一个运行的容器暂停
docker unpause:让一个容器从暂停状态恢复运行
- 第三阶段—过程管理
docker exec:进入容器内
docker logs:查看容器日志
docker ps:查看docker进程
docker --help:查看命令帮助
以Nginx安装作为案例讲解
1.镜像拉取
(1)在DockerHub上拉取Nginx镜像
(地址:https://hub.docker.com/_/nginx)
搜索Nginx,使用docker pull nginx不带tag,则默认为拉取最新的版本latest
(2)进入服务器拉取镜像
命令:docker pull nginx
[root@dev02 ~]docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
(3)查看镜像
命令:docker images
[root@dev02 ~] docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 14 months ago 141MB
如果要删除无用的镜像,可执行下命令(强删除)
[root@dev02 ~]docker rmi -f 605c77e624dd
2.容器部署与查看
a.容器启动
命令:docker run --name [容器名称] -p [宿主机端口]:[容器端口] -d nginx
[root@dev02 ~] docker run --name mynginx -p 80:80 -d nginx
8103e1281a9a814de051d045b82153ac41a3a3b19b5220e324f0b2328341f92d
命令解读:
docker run :创建并运行一个容器
–name : 给容器确定个名字一个名字,案例命名为mynginx
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器
nginx:镜像名称,案例用nginx
b.容器查看:
[root@dev02 ~]19 docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8103e1281a9a nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp mynginx
此时可访问主机ip,显示为nginx index主页则启动成功
3.查看容器日志
命令:docker logs [容器id]
[root@dev02 ~]21 docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8103e1281a9a nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 0.0.0.0:80->80/tcp mynginx
[root@dev02 ~]22 docker logs 8103e1281a9a
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/03/06 09:21:43 [notice] 1#1: using the "epoll" event method
2023/03/06 09:21:43 [notice] 1#1: nginx/1.21.5
2023/03/06 09:21:43 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
2023/03/06 09:21:43 [notice] 1#1: OS: Linux 3.10.0-1062.el7.x86_64
2023/03/06 09:21:43 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023/03/06 09:21:43 [notice] 1#1: start worker processes
ps:如果要跟踪日志实时输出,可在命名上加参数-f
如 docker logs 8103e1281a9a -f
4.进入容器内部
命令:docker exec -it [容器名] [要执行的命令]
[root@dev02 ~] docker exec -it mynginx bash
root@8103e1281a9a:/#
命令解读:
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mynginx :要进入的容器的名称
bash:进入容器后执行的命令,bash是一个linux终端交互命令
ps:进入容器后,可按需操作
到此流程基本完结
备注:docker命令参数无需一一记住,用好–help
如:
demo1:查看docker save 的指令说明
[root@dev02 ~]1 docker save --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOU
demo2:查看docker所有的指令说明
[root@zhdc-ibms-dev02 ~]2 docker --help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with
"docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
app* Docker App (Docker Inc., v0.9.1-beta3)
builder Manage builds
buildx* Docker Buildx (Docker Inc., v0.8.2-docker)
config Manage Docker configs
container Manage containers
......省略
------编辑者:梦想的边缘