# docker常用命令

# 查看资源

docker system df -v

# docker安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

# docker开机启动

sudo systemctl start docker && sudo systemctl enable docker

# docker卸载

删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

# docker-compose安装

下载对应的版本:https://github.com/docker/compose/releases/

wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64

# 修改名称
mv docker-compose-Linux-x86_64 docker-compose

# 添加执行权限
sudo chmod +x docker-compose

# 移动到 /usr/local/bin
sudo mv docker-compose /usr/local/bin

# 验证安装是否成功
docker-compose -version

systemOS: debian 8+

校对时间:

cp  /usr/share/zoneinfo/Asia/ShangHai  /etc/localtime
  • 安装Docker
sudo pacman -S docker
  • 安装Dockercompose
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

测试安装是否成功:

docker -v
docker-compose -version

建立 Docker 组加入当前用户:

sudo groupadd docker
sudo usermod -aG docker $USER

开机启动docker:

sudo systemctl enable docker &&
sudo systemctl start docker

// 重启docker
systemctl daemon-reload &&
systemctl restart docker

有时候pull image 的时候很慢可以添加国内源

// sudo vim /etc/docker/daemon.json

{
    "registry-mirrors": [
    "https://kfwkfulq.mirror.aliyuncs.com",
    "https://2lqq34jg.mirror.aliyuncs.com",
    "https://pee6w651.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
    ]
}
  • Laradock

Wike: http://laradock.io/

快速开始:克隆Laradock

git clone https://github.com/Laradock/laradock.git

自定义配置

cd laradock
cp env-example .env

运行容器

docker-compose up -d nginx phpmyadmin workspace 

连接数据库

DB_HOST=mysql //记得是:mysql, 不是127.0.0.1
REDIS_HOST=redis

Ps: .env 文件是基本的配置文件,大家可以根据自己的需求更改配置,需要注意的是,如果默认安装了mysql:8.0,但是我想安装mysql:5.6怎么办?

vim .env
ESC
:/mysql

找到mysql,然后【MYSQL_VERSION=5.6】直接写版本就可以 最后需要build一下,并且删除之前的mysql缓存数据

cd laradock
rm -rf ~/.laradock
docker-compose build mysql
docker-compose up -d nginx mysql phpmyadmin

# docker-swarm

# master
docker swarm init --advertise-addr 192.168.99.100
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

# Laradock修改记录

# minio

# .env
MINIO_WEB_PORT=9001
minio:
      image: minio/minio
      privileged: true
      restart: always
      volumes:
        - ${DATA_PATH_HOST}/minio/data:/data
        - ${DATA_PATH_HOST}/minio/config:/root/.minio
      ports:
        - "${MINIO_PORT}:9000"
        - "${MINIO_WEB_PORT}:9001"
      command: server --console-address ':9001' /data  #指定容器中的目录 /data
      healthcheck: # 健康检查
        test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
        interval: 30s
        timeout: 20s
        retries: 3
      environment:
        - MINIO_ROOT_USER=admin
        - MINIO_ROOT_PASSWORD=admin666
      networks:
        - frontend
        - backend

# Laradock扩展应用

相应文件夹可以到github或者群里获取。

.env

## httpbin 
HTTPBIN_PORT=8085

## wordPress
WORDPRESS_PORT=8086
WORDPRESS_HTML=./wordpress

## emby 
# bash: mkdir -p emby/config emby/Data emby/Pan
EMBY_IMAGE=emby/embyserver
EMBY_HTTP_PORT=8085
EMBY_HTTPS_PORT=8086
EMBY_CONFIG_PATH=./emby/config
EMBY_SHAREDIR_PATH=./emby/data
EMBY_CLOUD_PATH=/home/orangbus/Pan

## jellyfin
# bash:mkdir -p /home/video && mkdir -p ./jellyfin/config cache
JELLYFIN_IMAGE=jellyfin/jellyfin:latest
JELLYFIN_HTTP_PORT=8096
JELLYFIN_CONFIG=./jellyfin/config
JELLYFIN_CACHE=./jellyfin/cache
JELLYFIN_VIDEO_PATH=/home/video

# nextCloud ############################
# bash: mkdir nextcloud && cd nextcloud && mkdir -p NextCloud Apps Config Data Theme
NEXTCLOUD_PORT=8083
NEXTCLOUD=./nextcloud/NextCloud
NEXTCLOUD_APPS=./nextcloud/Apps
NEXTCLOUD_CONFIG=./nextcloud/Config
NEXTCLOUD_DATA=./nextcloud/Data## emby 
# bash: mkdir -p emby/config emby/Data emby/Pan
EMBY_IMAGE=emby/embyserver
EMBY_HTTP_PORT=8085
EMBY_HTTPS_PORT=8086
EMBY_CONFIG_PATH=./emby/config
EMBY_SHAREDIR_PATH=./emby/data
EMBY_CLOUD_PATH=/home/orangbus/Pan

## jellyfin
# bash:mkdir -p /home/video && mkdir -p ./jellyfin/config cache
JELLYFIN_IMAGE=jellyfin/jellyfin:latest
JELLYFIN_HTTP_PORT=8096
JELLYFIN_CONFIG=./jellyfin/config
JELLYFIN_CACHE=./jellyfin/cache
JELLYFIN_VIDEO_PATH=/home/video
NEXTCLOUD_THEME=./nextcloud/Theme

# 百度网盘
BAIDU_PORT=8088
BAIDU_PATH=./baidu/data

# aria2
# bash: mkdir aria2 && mkdir -p Download config
ARIA2_HTTP_PORT=8089
ARIA2_POER1=6800
ARIA2_POER2=16881
ARIA2_SECRET=admin  # 密码
ARIA2_DOWNLOAD_DIR=./aria2/Download
ARIA2_CONFIG=./aria2/config

# ownCloud
#bash mkdir -p owncloud/html owncloud/data owncloud/config owncloud/apps
OWNCLOUD_PORT=8086
OWNCLOUD_DATA=/home/orangbus/Owncloud
OWNCLOUD_HTML=./owncloud/html
OWNCLOUD_APP=./owncloud/apps
OWNCLOUD_CONFIG=./owncloud/config

# # scylla
# bash mkdir -p scylla/data
SCLLA_PORT=8087
SCLLA_DATA=./scylla/data

docker-compose

# httpin 
    httpbin:
      container_name: httpbin
      image: kennethreitz/httpbin
      ports:
      - 8085:80
      
# wordPress 生产环境请自行修改数据库账号密码
    wordpress:
      container_name: wordpress
      image: wordpress
      environment:
        WORDPRESS_DB_HOST: mysql
        WORDPRESS_DB_USER: root
        WORDPRESS_DB_PASSWORD: root
        WORDPRESS_DB_NAME: wordpress
      volumes:
        - ${WORDPRESS_HTML}:/var/www/html
      ports:
      - "${WORDPRESS_PORT}:80"
      depends_on:
        - mysql
        - nginx
        - php-fpm
      networks:
        - frontend
        - backend

# emby
    emby:
      container_name: emby
      image: ${EMBY_IMAGE}
      restart: always
      ports:
      - "${EMBY_HTTP_PORT}:8096"
      - "${EMBY_HTTPS_PORT}:8920"
      environment:
        UID: 1000
        GID: 100
        GIDLIST: 100
        DEVICE: /dev/dri:/dev/dri
        RUNTIME: nvidia
      volumes:
      - ${EMBY_CONFIG_PATH}:/config
      - ${EMBY_SHAREDIR_PATH}:/mnt/shareDir
      - ${EMBY_CLOUD_PATH}:/mnt/CloudDrive

# jellyfin
	jellyfin:
      container_name: jellyfin
      image: jellyfin/jellyfin:${JELLYFIN_IMAGE}
      restart: always
      ports:
      	- "${JELLYFIN_HTTP_PORT}:8096"
      volumes:
      - ${JELLYFIN_CONFIG}:/config
      - ${JELLYFIN_CACHE}:/cache
      - ${JELLYFIN_VIDEO_PATH}:/video

### nextCloud $$$$$$$$$$$$$$$$$$

    nextcloud:
      container_name: nextcloud
      image: nextcloud
      volumes:
        - ${NEXTCLOUD}:/var/www/html
        - ${NEXTCLOUD_APPS}:/var/www/html/custom_apps
        - ${NEXTCLOUD_DATA}:/var/www/html/data
        - ${NEXTCLOUD_CONFIG}:/var/www/html/config
        - ${NEXTCLOUD_THEME}:/var/www/html/themes
      depends_on:
        - nginx
        - php-fpm
        - mysql
      ports:
        - "${NEXTCLOUD_PORT}:80"
      networks:
        - frontend
        - backend

# 百度网盘
    baidu:
      container_name: baidupcs
      image: auska/docker-baidupcs
      volumes:
        - ${BAIDU_PATH}:/root/Download
      environment:
        - PGID=1001
        - PUID=1001
        - TZ=Asia/Shanghai
        - PORT=1999
      ports:
        - "${BAIDU_PORT}:1999"

# aria2
    aria2:
      container_name: aria2
      image: auska/docker-aria2
      volumes:
        - ${ARIA2_DOWNLOAD_DIR}:/mnt/Download
        - ${ARIA2_CONFIG}:/config
      environment:
        - PUID=0
        - PGID=0
        - RPC=6800
        - TZ=Asia/Shanghai
        - SECRET=${ARIA2_SECRET}
      ports:
        - "${ARIA2_HTTP_PORT}:80"
        - "${ARIA2_POER1}:6800"
        - "${ARIA2_POER2}:16881"
        
# owncloud
    owncloud:
      container_name: owncloud
      image: owncloud
      restart: always
      ports:
        - "${OWNCLOUD_PORT}:80"
      volumes:
        - ${OWNCLOUD_DATA}:/var/www/html/data
        - ${OWNCLOUD_HTML}:/var/www/html
        - ${OWNCLOUD_APP}:/var/www/html/apps
        - ${OWNCLOUD_CONFIG}:/var/www/html/config

####Scylla docker run -d -p 8899:8899 -p 8081:8081
  #-v /var/www/scylla:/var/www/scylla --name scylla wildcat/scylla:latest
    scylla:
      container_name: scylla
      image: wildcat/scylla:latest
      ports:
        - "8899:8899"
        - "${SCLLA_PORT}:8081"
      volumes:
        - ${SCLLA_DATA}/var/www/scylla

# Laradock无法安装解决方法汇总

# 镜像导入

# 修改hosts

# 替换无法下载链接

# 无法从github下载nvm解决办法

容器里面无法下载,那么我们就先下载好放在workspace 目录下

wget http://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh pathTo/laradck/workspace

编辑workspace 文件夹下面的dockerfile 文件

搜索:COPY ./aliases.sh /home/laradock/aliases.sh 在下面添加一行

COPY ./nvm.sh /home/laradock/nvm.sh

chown laradock:laradock /home/laradock/aliases.sh && \ 下面添加一行

chown laradock:laradock /home/laradock/nvm.sh && \

替换下载地址 mkdir -p $NVM_DIR && \ 下面替换(大概在677行左右)

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash \
# 替换为
cat /home/laradock/nvm.sh | bash \

重新启动一下workspace 就可以啦

docker-compose up -d workspace

如果还是不行,那就过几分钟重新再执行上面的命令,多试几次就好了,根据我安装这么多次经验,一般这样就可以安装好了,如果家里网络不是很好的话,建议蹭一下邻居的wifi,不然这玩意真的太难下载了,只要安装好了后面就好升级啥的了。(其实这玩意难安装是因为workspace 这个玩意,但是我一般用的是google云或者国外的服务器很快就安装好了)

# Laradock离线安装

有时候家里的网络慢或者各种原因,我们在启动laradock的时候总是会安装失败,其中95%的原因是下载docker镜像导致的,那么今天教大家如果离线安装(不太推荐,但是万不得已可是尝试一下)

本机安装了docker , docker-compsoe

需要一个云主机,最好是国外的,国内的也可以,(我没有怎么办,腾讯云有免费体验15天活动,可以尝试一下,或者加群找群主帮你处理)

流程:

  1. 现在云主机上下载并启动laradock
  2. 打包已经下载的镜像
  3. 下载打包镜像到本地
  4. 从本地导入下载的镜像

马上操练起来(假设你已经会基本使用laradock)

# 导出laradock镜像

列出所有进项,

➜  laradock git:(master) ✗ docker images    
laradock_nginx        latest         b7ba928e59d2        3 days ago           27.2MB

挨个导出,然后下载到本地

docker save -o laradock_nginx.tar laradock_nginx

此时会在当前目录下生成一个laradock_nginx.tar 的文件,

# 导入laradock镜像

docker load -i laradock_nginx.tar

到此就可以直接启用了。

# window10使用Laradock

起因:公司没人用linux,但是我又懒得去折腾window了,有什么办法可以在window环境下使用linux的开发环境,答案有。

大概思路:

1、window开启虚拟换支持,配置wsl

2、安装window下的linux子系统。

3、在linux系统下安装docker,并配置成功启动laradock。

4、远程同步开发。

是不是迫不及待了,马上操练起来。

# 遇到问题

成功安装了docker,但是无法使用

1、如果你参考我的步骤来,理论没问题,我在多台电脑成功配置ok。

2、重启一下终端,或者电脑。

3、请查看dockdockerdocker-compose 的版本是否是最新的,以及权限问题。

如何使用账号密码远程连接linux

安装 ssh

sudo apt-get install ssh

修改 ==sudo vim /etc/ssh/sshd_config== 文件,是 sshd_config 不是 ssh_config

将 #PasswordAuthentication no 的注释去掉,并且将 no 修改为 yes
将 #PermitRootLogin prohibit-password 的注释去掉,将 prohibit-password 改为 yes

重启ssh:

sudo systemctl restart sshd
// or
sudo service ssh restart

# 错误汇总

Service 'mysql' failed to build: error pulling image configuration: Get "https://registry-1.docker.io/v2/library/mysql/blobs/sha256:718a6da099d82183c064a964523c0deca80619cb033aadd15854771fe592a480": dial tcp: lookup registry-1.docker.io: no such host

sudo echo "servername 8.8.8.8" >> /etc/resolv.conf

ERROR: Service 'phpmyadmin' failed to build: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io: no such host

//第一步:创建daemon.json文件
sudo vim /etc/docker/daemon.json

//第二步:重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker

//第三步:执行docker-compose的时候需要在文件所在目录执行

docker起不来报错:Failed to start Docker Application Container Engine

/etc/docker/daemon.json
这个文件的格式不对,或者因为防火墙原因

# 使用ssh链接laradock的workspace

首先需要在 .env 文件把 WORKSPACE_INSTALL_WORKSPACE_SSH 环境变量设为 true.

然后重新构建镜像,使用 docker-compose build workspace,再启动镜像。

Laradock 使用密钥方式连接 ssh

img

登录用户名是 root,使用密钥方式,这里“用户密钥”可以选择项目 workspace 目录下的密钥文件 insecure_id_rsa 即可。

这样就可以通过 ssh 方式登录了。

# 停止、删除所有的docker容器和镜像

这些命令总是记不住,或者说不用心去记,所以记录在本文中,以便将来查询。

# 列出所有的容器 ID

docker ps -aq

# 停止所有的容器

docker stop $(docker ps -aq)

# 删除所有的容器

docker rm $(docker ps -aq)

# 删除所有的镜像

docker rmi $(docker images -q)

docker 1.13 中增加了docker system prune的命令,针对container、image可以使用docker container prunedocker image prune命令。

  • docker image prune --force --all或者docker image prune -f -a` : 删除所有不使用的镜像
  • docker container prune -f: 删除所有停止的容器

# 删除名称或标签为none的镜像

docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`

# 清理docker存储

failed to register layer: ApplyLayer exit status 1 stdout: stderr: open /usr/lib64/python3.6/ctypes/pycache/wintypes.cpython-36.opt-2.pyc: no space left on device

docker system prune -a --volumes

# 修改docker默认存储位置

查看存储位置: /var/lib/docker

docker info | grep "Docker Root Dir"

前置工作

备份来源的数据

sudo cp -r /var/lib/docker /data/docker

停止docker

sudo systemctl stop docker

修改配置文件/etc/docker/daemon.json

{
    ...
    "data-root": "/data/docker/", # 新路径存储位置
    ...
}

重启

systemctl restart docker