Docker基础操作
2024-12-29 20:09:57
安装docker
进入docker官网选择需要安装docker的系统按照操作安装docker,以unubtu为例
将当前用户添加到docker用户组
为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组(可以参考官方文档):
sudo usermod -aG docker $USER
执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。
操作
镜像(images)
- docker pull ubuntu:20.04:拉取一个镜像
- docker images:列出本地所有镜像
- docker image rm ubuntu:20.04 或 docker rmi ubuntu:20.04:删除镜像ubuntu:20.04
- docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个container的镜像
- docker save -o ubuntu_20_04.tar ubuntu:20.04:将镜像ubuntu:20.04导出到本地文件ubuntu_20_04.tar中
- docker load -i ubuntu_20_04.tar:将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来
容器(container)
- docker [container] create -it ubuntu:20.04:利用镜像ubuntu:20.04创建一个容器。
- docker ps -a:查看本地的所有容器
- docker [container] start CONTAINER:启动容器
- docker [container] stop CONTAINER:停止容器
- docker [container] restart CONTAINER:重启容器
- docker [contaienr] run -itd ubuntu:20.04:创建并启动一个容器(docker run -p 20000:22 -p port:port -itd ubuntu:20.04 创建并启动一个容器,并且添加了本地端口映射)
- docker [contaienr] -itd ubuntu:20.04: 创建一个容器,但没有启动
- docker [container] attach CONTAINER:进入容器
先按Ctrl-p,再按Ctrl-q可以挂起容器- docker [container] exec CONTAINER COMMAND:在容器中执行命令
- docker [container] rm CONTAINER:删除容器
- docker container prune:删除所有已停止的容器
- docker export -o xxx.tar CONTAINER:将容器CONTAINER导出到本地文件xxx.tar中
- docker import xxx.tar image_name:tag:将本地文件xxx.tar导入成镜像,并将镜像命名为image_name:tag
- docker export/import与docker save/load的区别:
export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
save/load会保存完整记录,体积更大- docker top CONTAINER:查看某个容器内的所有进程
- docker stats:查看所有容器的统计信息,包括CPU、内存、存储、网络等信息
- docker cp xxx CONTAINER:xxx 或 docker cp CONTAINER:xxx xxx:在本地和容器间复制文件
- docker rename CONTAINER1 CONTAINER2:重命名容器
- docker update CONTAINER –memory 500MB:修改容器限制
实操
1 | docker pull ubuntu:20.04 //拉取一个镜像。等待时间较久,取决于网络状况 |
拉取镜像之后,可以根据本地镜像创建容器,我一般创建的时候直接使用懒人方法,将需要的端口映射都添加上(后期添加端口映射太麻烦)
1 | docker run -p 20000:22 -p 443:443 -p 80:80 -p 3000:3000 -p 3001:3001 -p 3002:3002 -itd --name my_server ubuntu:20.04 |
之后就可以进入容器并设置用户密码了
1 | docker attach my_docker_server # 进入创建的docker容器 |
之后就可以正常操作了
后期添加端口映射
关于后期添加端口映射的方法我也找了一下,但是比较麻烦
参考了这篇博客
有两种办法
第一种
将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口
1 | #1、停止现有容器 |
第二种
修改要端口映射的容器的配置文件
1 | #1、查看容器的信息 |
完成之后重启docker服务即可
1 | systemctl restart docker |
此时,可以查看宿主机端口是否和容器内端口映射成功,在容器外执行
1 | netstat` `-an |``grep` `宿主机的映射端口 |
2024-12-29 20:09:57