1、docker服务安装:docker_install.sh
#!/bin/sh
echo '解压tar包...'
tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
vim docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
cp docker.service /etc/systemd/system/
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
echo 'docker安装成功...'
2、docker常用命令:
docker -v
docker commmit 提交一个容器为镜像
docker commit -m "my mysql" -a "caoyu" 9d mymysql:caoyu
commit:告诉docker服务端以某个容器作为镜像
-m:--comment添加注释
-a:作者
9d:容器id简写,唯一
mymysql:仓库及镜像名称
caoyu:镜像版本号
查看构建后的镜像信息:
docker inspect mymysql:caoyu
Dockerfile文件和docker build命令构建镜像
docker build -t caoyu:v1 .
.:代表上下文路径,docker会把上下文路径下面的文件和目录上传到Docker守护进程,一般是Dockerfile文件所在目录
如何运行容器:
1、拉取镜像 - docker pull busybox:1.2
2、查看本地镜像列表 - docker images
3、选择相应的镜像并运行 - docker run [-d] -name demo busybox:1.25 top
pull 拉取镜像
docker pull nginx:1.13.12
push 推送镜像
run 指定一个镜像运行一个容器
stop/start/restart 停止/启动/重启一个容器
rm 删除一个容器
rmi 删除一个镜像
inspect 显示一个容器详细信息
exec 在运行的容器中执行命令启动新进程
docker cp 命令将文件从容器拷贝到本地
docker cp <container_name_or_id>:<container_path> <local_path>
docker cp mycontainer:/app/file.txt /home/user
--保存镜像到本地
docker save nginx:1.13.12 > nginx_latest.tar
docker save -o nginx_latest.tar nginx:1.13.12
--将本地镜像文件导入docker容器
docker load -i nginx_1.13.12.tar
docker load --input nginx_latest.tar
--tag是一个用于给镜像打标签的命令
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag cr.registry.res.xxxx.cloud/library/nginx:v2.2.3 nginx:v2.2.3
$ docker login --username=dingtalk_koqsms registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/docker_cy/web:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/docker_cy/web:[镜像版本号]
[root@qianyi-node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cr.registry.res.xxxx.cloud/library/nginx v2.2.3 cf9845d2e2e3 11 months ago 40.7MB
nginx v2.2.3 cf9845d2e2e3 11 months ago 40.7MB
容器的三要素
容器:容器可以用来装业务程序和依赖环境。本质上就是一个加了限定参数的进程。
镜像:运行容器所需要的所有文件集合。
镜像仓库:镜像仓库是集中存放容器镜像的场所。
3、docker容器服务常用启动脚本:
cat start-mysql.sh
docker run -itd \
--name mysql \
--restart always \
-p 30036:3306 \
-v $PWD/mysql/config-file.cnf:/etc/mysql/conf.d/config-file.cnf \
-v $PWD/mysql/data:/var/lib/mysql \
-v $PWD/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql \
-v /etc/hosts:/etc/hosts \
-e MYSQL_ROOT_PASSWORD=123xxxxxx \
mysql:5.7
cat start-redis.sh
docker run -itd \
--restart always \
--name redis \
-p 30079:6379 \
-v $PWD/redis/redis.conf:/etc/redis/redis.conf \
-v $PWD/redis/data:/data:rw \
redis:6-alpine \
redis-server /etc/redis/redis.conf