service docker restart 启动docker 服务
创建容器,并配置 docker run -it --name=c1 centos:7 /bin/bash
-
docker ps -a
查看容器 -
docker run -it --name=c2 centos:7
在后台打开docker并没有进入 -
docker exec -it c2 /bin/bash
进如指定的docker -
docker ps
查看正在运行的容器 -
docker ps -a
查看所有的容器 up 在运行 -
docker ps -qa
查看所有的容器 up 在运行
docker run 参数:
-
-i 保持容器正在运行。通常与 -t 同时使用。加入it这个参数后,容器创建后会自动进入容器中,退出后,容器自动关闭。
-
-t : 为容器创造一个伪终端
-
-d: 以守护模式运行容器,创建一个容器在后台运行,需要使用docker exec 进入容器,退出后容器不会关闭
-
-it 创建的容器一般称为交互式容器,-id 创建的容器一般为守护容器
-
--name 一般为容器创建命名
docker 查看日志
docker logs [OPTIONS] CONTAINER
[OPTIONS]
-f : 跟踪日志输出
-t : 显示时间戳
--tail :仅列出最新N条容器日志
--since:显示某个日期至今的所有日志
CONTAINER
代表容器ID或容器名称
docker 容器其他命令:
-
docker stop [name]
关闭容器。 -
docker start [name]
开启容器。 -
docker rmi [name]
删除镜像。 -
docker rm [name]
删除容器。不能删除正在运行的容器 -
docker inspect [name]
查看容器的信息 -
docker rmi [id] 删除镜像
数据卷
-
是宿主机中的一个目录或文件
-
当容器目录和数据卷目录绑定后,对方的修改会立即同步
-
一个数据卷可以被多个容器同时挂载
-
一个容器也可以挂载多个数据卷
数据卷的作用:
-
容器数据持久化
-
客户端和容器进行数据交换
-
容器间数据交换
创建启动容器时,使用-v参数 设置数据卷
docker run .... -v [宿主机目录(文件)] :[容器内目录(文件)] ....
docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash
创建一个数据卷
注意:
-
目录必须是绝对路径
-
如果目录不存在会自动创建
-
可以挂载多个数据卷
数据卷容器
实现多个容器进行数据的交换,容器之间进行挂载
配置数卷容器:
docker run -it --name=c3 -v /volume centos:7 /bin/bash
使用c1 和 c2 进行挂载 使用 --volumes-from [参数]
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
Docker 应用部署
一、部署MySQL
-
搜索mysql镜像
docker search mysql
-
拉取mysql镜像
docker pull mysql:5.6
-
创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
-
参数说明:
-
-p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
-
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
-
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
-
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-
-
进入容器,操作mysql
docker exec –it c_mysql /bin/bash
-
使用外部机器连接容器中的mysql
172.17.0.4
docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://172.17.0.4:9200 \
-p 5601:5601 \
-d kibana:7.4.2
docker run -p 3306:3306 --name mysqlzzy \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=990915zzy \
-d mysql:5.7
docker update mysql --restart=always
docker run --name nacos -d -p 8848:8848 --privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=1048m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /home/nacos/logs:/home/nacos/logs \
nacos/nacos-server:1.2.1
二、部署Tomcat
-
搜索tomcat镜像
docker search tomcat
-
拉取tomcat镜像
docker pull tomcat
-
创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \-p 8080:8080 \-v $PWD:/usr/local/tomcat/webapps \tomcat
-
参数说明:
-
-p 8080:8080:将容器的8080端口映射到主机的8080端口
-v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
-
-
使用外部机器访问tomcat
三、部署Nginx
-
搜索nginx镜像
docker search nginx
-
拉取nginx镜像
docker pull nginx
-
创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息mkdir ~/nginxcd ~/nginxmkdir confcd conf# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容vim nginx.conf
user nginx;worker_processes
1;error_log /var/log/nginx/error.log warn;
pid
/var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;}
docker run -id --name=c_nginx \-p 80:80 \-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \-v $PWD/logs:/var/log/nginx \-v $PWD/html:/usr/share/nginx/html \nginx
-
参数说明:
-
-p 80:80:将容器的 80端口映射到宿主机的 80 端口。
-
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
-
-v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
-
-
使用外部机器访问nginx
四、部署Redis
-
搜索redis镜像
docker search redis
-
拉取redis镜像
docker pull redis:5.0
-
创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:5.0
-
使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379
Docker 镜像原理
Doker镜像制作
容器转转为镜像
docker commit 容器id 镜像名称:版本号
镜像转为压缩文件进行传输
docker save -o 压缩文件名称 镜像名称:版本号
压缩文件转为镜像
docker load -i 压缩文件名称
安装部署Gitlib
一、安装所需要的redis
docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/data \
redis:6.2
二、安装下载并运行gitlab所需要的postgresql(注意密码填写自己的)
docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=990915' \
--env 'DB_EXTENSION=pg_trgm,btree_gist' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:12-20200524
#--env 映射对应的系统变量
三、安装gitlab
docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=990915zzy' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=990915zzy' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=990915zzy' \
--env 'GITLAB_HOST=116.62.6.60' \
--env 'GITLAB_BACKUP_SCHEDULE=daily' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:15.2.1
#参数说明
--link [互联容器名称:别名] 对容器进行互联
--publish [外部端口:内部端口]所在服务器的外部端口映射到内部端口