Docker
- 一、docker常用命令
- docker ps 格式化输出
- Linux设置命令别名
- 二、数据卷
- 相关命令
- 挂载到默认目录(/var/lib/docker)
- 挂载到本地目录
- 三、自定义镜像
- Dockerfile
- 构建镜像的命令
- 四、网络
- 自定义网络
- 五、DockerCompose
- 相关命令
一、docker常用命令
docker ps 格式化输出
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}"
Linux设置命令别名
编辑此文件
vi ~/.bashrc
alias [别名]=[需要别名的命令]
注意,等号两边不要空格,若命令包含空格,则一定要加 ‘ ’
刷新生效
source ~/.bashrc
举个例子:
二、数据卷
在docker容器中,容器只包含可运行的最小环境,在容器不能使用vi命令进行编辑,因此通过数据卷把容器中的文件挂载到宿主机,实现双向数据绑定。
- 数据卷是一个虚拟目录,方便操作容器内文件
- -v 数据卷名:容器目录
相关命令
挂载到默认目录(/var/lib/docker)
挂载到本地目录
举个例子:
docker运行mysql镜像
三、自定义镜像
镜像结构:
Dockerfile
举个例子:
构建镜像的命令
举个例子:
四、网络
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器都会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
注意:网桥分配的ip地址是随机的,每次容器启动可能分配的ip地址不相同。
自定义网络
自定义网络会创建一个新的虚拟网桥,容器之间可以通过容器名相互访问,不再受ip地址变化而影响访问。
容器加入自定义网络的两种方式:
- 在容器创建时,可以直接加入网络。
- 在容器已经运行后,使用命令行加入
docker network connect 【网络】【容器名】
举个例子:
五、DockerCompose
通过一个yml文件,可快速构建项目。
和docker run的语法相比较:
相关命令
举个例子:
[root@long java-jar-web-project-docker]# cat docker-compose.yml
version: '3' # Docker-Compose版本
services:
web:
build: # Jdk运行环境使用Dockerfile文件
context: ./web-service
dockerfile: Dockerfile
ports: # 端口映射 9999 -> 9999
- '9999:9999'
container_name: web_db # 容器名
volumes:
- './jar:/home/jar_home' # 映射路径, 将主机的 ./jar 路径映射到容器内的/home/jar_home
depends_on: # 执行顺序
- 'redis'
- 'mysql'
networks: # 绑定ip地址
extnetwork:
ipv4_address: 175.20.0.4
mysql: # mysql 同上
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: test
MYSQL_PASS: test
image: mysql:5.7
networks:
extnetwork:
ipv4_address: 175.20.0.2
container_name: mysql_db
restart: always
volumes:
- './mysql-service/db:/var/lib/mysql'
- './mysql-service/conf/my.cnf:/etc/my.cnf'
- './mysql-service/init:/docker-entrypoint-initdb.d/'
ports:
- '6606:3306'
redis: # redis
restart: always
image: redis # redis镜像
container_name: redis_db # redis容器名字
command: redis-server --requirepass 123456 --appendonly yes # redis容器密码,开启持久化
networks: # 绑定ip地址
extnetwork:
ipv4_address: 175.20.0.3
ports: # 端口映射
- '6609:6379'
volumes: # 将本地 ./redis-service/db 映射到 容器中的 /data 目录
- './redis-service/db:/data'
networks:
extnetwork:
ipam:
config:
- subnet: 175.20.0.0/16
后记
👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹