资讯动态

Docker入门-安装和使用

发布时间:2026/8/17 15:50:49 来源:尧图企业网站定制
一、docker环境搭建1、安装命令sudoaptinstalldocker.io2、取消docker的sudo权限1将当前用户添加到docker组sudogpasswd-a${USER}docker2更新docker groupnewgrpdocker3测试验证dockerversion3、修改镜像源1vim /etc/docker/daemon.json{registry-mirrors:[https://hub.docker.comhttps://registry.docker-cn.com,https://docker.1ms.run,other mirror image source...]}2重启dockersudosystemctl restartdocker注需要docker镜像源被屏蔽或下架需要自行查找使用可用的镜像源目前可以单独配置使用1ms镜像源。二、docker常用命令1、镜像管理# 查看本地所有镜像dockerimages# 移除指定镜像dockerimagermimage_name:tag/image_id# 其他命令# dockerhub(https://hub.docker.com/)实在是太慢了# 创建容器使用本地不存在的镜像时默认会从dockerhub拉取dockerpulldockercommitdockertagdockerlogindockerpush2、容器管理# 查看当前运行docker容器dockerps# 查看环境中的所有docker容器dockerps-a# 指定image创建后台运行容器进程1为:/bin/bashdockerrun-itd--namecontainer_nameimage_name:tag/bin/bash# 启动/停止/进入容器dockerstartcontainer_name/iddockerstopcontainer_name/iddockerattachcontainer_name/id# 指定运行容器中的进程# 使用attach进入容器退出默认会停止容器可以使用exec运行/bin/bash创建新的交互终端dockerexec-itcontainer_name/id/bin/bash#移除指定容器dockerrmcontainer_name/id# 将本地文件cp到容器内dockercpfile_local_pathcontaine_name/id:file_docker_path# 将容器内的文件cp到本地dockercpcontaine_name/id:file_docker_pathfile_local_path3、本地镜像分享# 从容器导出镜像文件当前运行容器的快照dockerexportcontainer_id/nameimage_name.tar# 将镜像文件导入本地dockerimportimage_name.tarimage_name:image_tag# 将本地镜像导出包含image的所有数据层常用于迁移或备份imagedockersave-oimage_name.tarimage_id/name# 将镜像文件导入到本地不可重命名dockerload-iimage_name.tar4、docker runexec 常用参数docker run --helpUsage:dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]Create and run a new container from an image Aliases:dockercontainer run,dockerrun Options:... -d,--detachRun containerinbackground and print container ID -e,--envlist Set environment variables --env-file list Readinafileof environment variables... -h,--hostnamestring Containerhostname -i,--interactiveKeep STDINopenevenifnot attached--ipstring IPv4 address(e.g.,172.30.100.104)--ip6string IPv6 address(e.g.,2001:db8::33)...--namestring Assign a name to the container...# 参数格式: -p host_port:container_port-p,--publishlist Publish a containers port(s)to thehost... -t,--ttyAllocate a pseudo-TTY -u,--userstring Username orUID(format:name|uid[:group|gid])...# 参数格式: -v host_dir:container_dir-v,--volumelist Bindmounta volume... -w,--workdirstring Working directory inside the containerdocker exec --helpUsage:dockerexec[OPTIONS]CONTAINER COMMAND[ARG...]Execute acommandina running container Aliases:dockercontainer exec,dockerexecOptions: -d,--detachDetached mode: runcommandinthe background --detach-keys string Override the key sequencefordetaching a container -e,--envlist Set environment variables --env-file list Readinafileof environment variables -i,--interactiveKeep STDINopenevenifnot attached--privilegedGive extended privileges to thecommand-t,--ttyAllocate a pseudo-TTY -u,--userstring Username orUID(format:name|uid[:group|gid])-w,--workdirstring Working directory inside the container三、Docker高级操作1、使能IPv6网络1vim /etc/docker/daemon.json{experimental:true,ipv6:true,ip6tables:true,fixed-cidr-v6:2000::/3}2重启dockersudosystemctl restartdocker2、在docker容器内使用systemd1指定image创建容器dockerrun-it--namecontainer_name--privilegedimage_name:tag/bin/bash2更新软件源部署systemd# 更新软件源aptupdate# 更新软件aptupgrade# 安装systemdaptinstallsystemdln-s/lib/systemd/systemd /usr/sbin/init# 也可以同时安装其他所需软件# ...安装完成后在container内执行exit退出容器。注若需要docker容器支持systemd需要将/usr/sbin/init设置为1号进程通常为/bin/bash)因此我们需要将这个容器打包为新的镜像基于新的镜像再创建支持systemd的新容器。*3将当前容器保存为新镜像dockercommit-aauthor-mcommit_infocontainer_nameimage:tag4创建使用支持systemd的容器# 创建容器dockerrun-itd--namecontainer_name--privilegedimage_with_systemd_name:tag/usr/sbin/init# 进入容器dockerexec-itcontainer_name/bin/bash3、固定docker容器ip地址当创建docker容器时固定ip地址需要创建自定义网络docker安装后配置的默认网络不支持设置静态ip。当我们使用安装后默认的网络比如bridge设置静态ip时会看到以下报错devubuntu:dockerrun-it--ip172.18.0.2--networkbridge--namenetwork_test ubuntu:latest docker: Error response from daemon: user specified IP address is supported on user defined networks only. ERRO[0000]error waitingforcontainer:我们可以使用docker network命令创建自定义网络用于创建固定ip的容器实测支持IPv4/IPv6的静态IP设置。1docker network工具# 查看命令帮忙dockernetwork--help# 查看已存在网络dockernetworkls# 创建自定义网络dockernetwork createnetwork_name# 移除指定网络dockernetworkrmnetwork_name# 查看网络的详细信息dockernetwork inspectnetwork_name2创建自定义网络IPv4网络dockernetwork create--subnetipv4_subnet_addrnetwork_nameIPv6网络dockernetwork create--subnetipv6_subnet_addr--ipv6network_name注创建的默认虚拟网卡名为br-network-hash, 可以添加-o com.docker.network.bridge.namebr_name参数指定虚拟网卡名。3指定网络和IP地址创建容器IPv4网络dockerrun-itd--ipipv4_address--networknetwork_name--namecontainer_nameimage_name:tagIPv6网络dockerrun-itd--ip6ipv6_address--networknetwork_name--namecontainer_nameimage_name:tag此时创建的容器已被设置为指定ip地址可以进入容器查看确认。多个容器使用相同自定义网络时彼此间默认可以通信。如果我们希望不同自定义网络下的容器可以实现通信我们可以借linux下iptables命令配置流量转发。1增加experimental和iptables/ip6tables配置项# vim /etc/docker/daemon.json{experimental:true,iptables:true,ip6tables:true,}2配置流量转发规则# 允许net1_name -- net2_name的流量转发sudoip6tables-IDOCKER-USER-inet1_name-onet2_name-jACCEPT# 允许net2_name -- net1_name的流量转发sudoip6tables-IDOCKER-USER-inet2_name-onet1_name-jACCEPT

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价