[沫忘录] Docker容器
启动和校验
#启动Docker
systemctl start docker
#停止Docker
systemctl stop docker
#重启Docker
systemctl restart docker
service docker restart
#使Docker开机自启
systemctl enable docker
#执行docker ps命令,可以用来检验安装启动成功
docker ps
Docker容器的常见命令
创建并运行一个容器
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
-d 让容器在后台运行,避免命令行阻塞等待
–name 为该容器指定一个名字
-p 设置端口号,前者是在端系统中,该docker容器的端口号,后者docker容器环境中,docker容器的端口号。即端口映射。
-e 设置环境变量,固定格式: KEY=VALUE,该处TZ设定的是时区
最后一行常数是指定当前运行的image镜像的名字
可以为镜像指定版本号(mysql:版本号), 否则版本号默认为最近的一个版本。
容器停止与启动
docker stop 容器名
docker start 容器名
在这里插入
镜像拉取与推送
docker pull 远程镜像
docker push 本地镜像
查看本地镜像列表
docker images
镜像的封装与解包
docker save -o ---.tar(.7z等压缩包后缀) 镜像名
docker load -i 本地压缩镜像名
镜像的删除
docker rmi 镜像名
查看容器详情
docker inspect
容器的删除
docker rm 容器名
进入容器
docker exec -it 容器名 bash
-it 让容器添加一个可交互的终端
bash 以命令行作为容器内部的交互方式
命令的别名
#找到bashrc文件
vi ~/.bashrc
#然后在配置文件中添加
alias key='value'
#例如
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.status}}\t{{.Names}}"'
#当配置完后,输入
source ~/.bashrc
#配置即生效
当遇到权限不够时可以通过以下方式给用户添加权限
sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker
sudo groupadd docker # 添加docker用户组
sudo gpasswd -a $USER docker # 将当前用户添加至docker用户组
newgrp docker # 更新docker用户组
数据卷挂载
数据卷命令
#创建数据卷
docker volume create
#查看所有数据卷
docker volume ls
#删除指定数据卷
docker volume rm
#查看某个数据卷的详情
docker volume inspect
#清除数据卷
docker volume prume
数据卷挂载
- 在执行docker run命令时, 可使用**-v 数据卷:容器内目录**进行对数据卷的挂载
- 当创建容器时,如果挂载的数据卷不存在,会自动创建数据卷
tip:
当cd是一个linux内部命令, 而sudo只能为应用程序提供更高权限。因此当执行cd跳转目录需要更高权限时,可采取以下操作:
sudo -i #提升用户权限
sudo -s #打开拥有更高执行权限的特殊shell
当退出时,均可使用exit命令或快捷键ctrl + d 退出
本地目录挂载
- 在执行docker run命令时,使用**-v 本地目录:容器内目录**可以完成本地目录的挂载
- 本地目录必须以"/“或”./"开头的绝对路径,否则会被识别为数据卷而非本地目录,并且该本地目录存在。
Docker镜像制作
镜像就是包含了应用程序、程序运行的系统库、运行配置等文件的文件包,这个文件包能够使镜像内程序不受宿主机的操作系统的限制而独立运行。
而构建镜像的过程就是将上述文件打包的一系列过程。
dockerfile语法
示例
docker build -t myimage:1.0
-t: 指给镜像起名,版本1.0不指定则默认为lastest
Docker网络
默认情况下, 所有容器都是以bridge方式连接到Docker的一个默认虚拟网桥docker0上。
该虚拟网桥docker0的ip地址为
172.17.0.1/16
能够为容器之间提供基本的网络互联。
但使用虚拟网桥docker0进行容器间互联较为繁琐,故引入一种自定义网络的方式进行容器间互联。
docker的网络操作命令
#创建一个网络
docker network create 网络名
#查看所有网络
docker network ls
#删除指定网络
docker network rm 网络名
#清除未使用的网络
docker network prune
#使指定容器加入或离开某网络
docker network connect
docker network disconnect
#查看网络详细信息
docker network inspect
除在容器创建后使用connect加入到该自建网络,也可以在容器创建时加 –network 参数指定网络并加入该网络。
使用该参数创建出的容器不会被添加到docker0默认网络中。
network prune
#使指定容器加入或离开某网络
docker network connect
docker network disconnect
#查看网络详细信息
docker network inspect
除在容器创建后使用connect加入到该自建网络,也可以在容器创建时加 **--network** 参数指定网络并加入该网络。
使用该参数创建出的容器==不会被添加到docker0默认网络中==。